Bonitos enlaces permanentes para resultados de búsqueda con consulta adicional var
1 respuesta
- votos
Paramodificar las reglas de reescritura debúsqueda,puede conectarse alfiltro search_rewrite_rules
. Puede agregar las reglas de reescritura adicionales que coincidan con lostipos depublicación ustedmismo,opuede cambiar la "estructura de reescritura debúsqueda"predeterminadaparaincluirtambiéneltipo depublicación y luego volver agenerar las reglas (hay cuatro reglas: unaestándar,otra conpaginación y dosparapiensos). Porque WP_Rewrite::generate_rewrite_rules()
genera reglasen cada "nivel de directorio" ,obtendrá reglaspara /search/[keyword]/section/[post_type]/
,/search/[keyword]/section/
y /search/[keyword]/
. Nonecesita la regla delmedio,peronoestará demásmantenerla.
add_filter( 'search_rewrite_rules', 'wpse15418_search_rewrite_rules' );
function wpse15418_search_rewrite_rules( $search_rewrite_rules )
{
global $wp_rewrite;
$wp_rewrite->add_rewrite_tag( '%post_type%', '([^/]+)', 'post_type=' );
$search_structure = $wp_rewrite->get_search_permastruct();
return $wp_rewrite->generate_rewrite_rules( $search_structure . '/section/%post_type%', EP_SEARCH );
}
Para verificar las reglas,use mi complemento analizador Rewrite .
To modify the search rewrite rules you can hook into the search_rewrite_rules
filter. You can either add the extra rewrite rules that match post types yourself, or you can change the default "search rewrite structure" to also include the post type and then re-generate the rules (there are four rules: one standard, one with paging and two for feeds). Because WP_Rewrite::generate_rewrite_rules()
generates rules at every "directory level", you will get rules for /search/[keyword]/section/[post_type]/
, /search/[keyword]/section/
and /search/[keyword]/
. You don't need the middle rule, but it won't hurt to keep it in.
add_filter( 'search_rewrite_rules', 'wpse15418_search_rewrite_rules' );
function wpse15418_search_rewrite_rules( $search_rewrite_rules )
{
global $wp_rewrite;
$wp_rewrite->add_rewrite_tag( '%post_type%', '([^/]+)', 'post_type=' );
$search_structure = $wp_rewrite->get_search_permastruct();
return $wp_rewrite->generate_rewrite_rules( $search_structure . '/section/%post_type%', EP_SEARCH );
}
To check the rules, use my Rewrite analyzer plugin.
Megustaría saber cómopuedo reescribir una URL debúsqueda quetambién contiene una variable de consulta adicionalen unenlacepermanente usando
wp_redirect
yelganchotemplate_redirect
.Hetomadoel código del complemento Nice Search quefuncionabien para cambiar
http://example.com?s=africa
enhttp://example.com/search/africa
:Peroestoy usando unmenú desplegable de selecciónen combinación conel complemento Relevanssi parapermitir a los visitantes limitar labúsqueda a untipo depublicaciónen particular. Esto agrega una variable de consulta
post_type
,p. Ej.http://example.com?s=africa&post_type=features
. Megustaría queestotuviera una URL similar ahttp://example.com/search/africa/section/features
.El código de Nice Search hace que sepierda la var de consultapost_type. Entoncesprobéel siguiente código:
pero WordPress ahora cree queeltérmino debúsquedaes
africa/section/features
.¿Hay algunamanera demantenereltérmino debúsqueda y la variable de consultaen unbuenenlacepermanente?
Gracias Simón