Piuttosto permalink per i risultati di ricerca con query extra var
1 risposta
- voti
Permodificare le regole di riscrittura della ricercapuoi agganciarti alfiltro search_rewrite_rules
. Puoi aggiungere le regole di riscritturaextra che corrispondono aitipi dipost oppurepuoimodificare la "struttura di riscrittura della ricerca"predefinitaperincludere ancheiltipo diposte quindi rigenerare le regole (ci sono quattro regole: una standard,una conpaginazionee dueperi feed). Perché WP_Rewrite::generate_rewrite_rules()
genera regole a ogni "livello di directory" ,otterrai regoleper /search/[keyword]/section/[post_type]/
,/search/[keyword]/section/
e /search/[keyword]/
. Non haibisogno della regola centrale,manonti faràmalemantenerla.
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 );
}
Per controllare le regole,utilizzail ilmioplug-in Rewrite Analyzer .
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.
Mipiacerebbe sapere come riscrivere un URL di ricerca che contiene anche una query varextrain ungraziosopermalink utilizzando
wp_redirect
e l'hooktemplate_redirect
.Hopresoil codice dalplug-in Nice Search chefunzionabene per cambiare
http://example.com?s=africa
inhttp://example.com/search/africa
:Ma sto utilizzando unmenu a discesa di selezionein combinazione conilplug-in Relevanssi per consentire ai visitatori di restringere la ricerca a unparticolaretipo dipost. Questo aggiunge una variabile di query
post_type
,ades.http://example.com?s=africa&post_type=features
. Vorrei che questo avesse un URL simile ahttp://example.com/search/africa/section/features
.Il codice Nice Search causa laperdita della variabile della querypost_type. Quindi hoprovatoil seguente codice:
ma WordPress orapensa cheiltermine di ricerca sia
africa/section/features
.C'è unmodopermantenereiltermine di ricercae la query varin unbelpermalink?
Grazie Simon