Hübsche Permalinks für Suchergebnisse mit zusätzlicher Abfrage var
1 Antworten
- Stimmen
Um die Regeln zum Umschreiben der Suche zu ändern,können Sie sichin den Filter search_rewrite_rules
einbinden. Sie könnenentweder die zusätzlichen Umschreiberegeln hinzufügen,die den Beitragstypen selbstentsprechen,oder Sie können die Standardstrukturfür das Umschreiben der Suche ändern,um auch den Beitragstypeinzuschließen,und dann die Regelnneugenerieren (esgibt vier Regeln:einen Standard,einen mit Paging und zweifür Feeds). Weil WP_Rewrite::generate_rewrite_rules()
generiert Regeln aufjeder "Verzeichnisebene" . Sieerhalten Regelnfür /search/[keyword]/section/[post_type]/
,/search/[keyword]/section/
und /search/[keyword]/
. Siebrauchen diemittlere Regelnicht,aberestutnicht weh,siebeizubehalten.
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 );
}
Um die Regeln zu überprüfen,verwenden Sie mein Rewrite Analyzer-Plugin .
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.
Ichmöchte wissen,wieicheine Such-URL,die aucheine zusätzliche Abfragevariableenthält,mithilfe von
wp_redirect
und dem Hooktemplate_redirect
in einen hübschen Permalink umschreiben kann.Ich habe den Code aus dem Nice Search -Plugin übernommen,das zum Ändern von
http://example.com?s=africa
inhttp://example.com/search/africa
:Ich verwendejedochein ausgewähltes Dropdown-Menüin Kombinationmit dem Plugin Relevanssi ,damit Besucher die Suche aufeingrenzen könnenein bestimmter Beitragstyp. Diesfügteine Abfragevariable
post_type
hinzu,z.http://example.com?s=africa&post_type=features
. Ichmöchte,dass dieseine URL wiehttp://example.com/search/africa/section/features
hat.Der Nice Search-Codeführt dazu,dass die Abfragevariablepost_type verlorengeht. Also habeich denfolgenden Code ausprobiert:
aber WordPressglaubtjetzt,dass der Suchbegriff
africa/section/features
ist.Gibteseine Möglichkeit,den Suchbegriff und die Abfragevariablein einem schönen Permalink zu speichern?
Danke Simon