Красивые постоянные ссылки для результатов поиска с дополнительным запросом var
1 ответ
- голосов
Чтобы изменить правила перезаписи поиска,вы можете подключиться к фильтру search_rewrite_rules
. Вы можете либо добавить дополнительные правила перезаписи,которые соответствуют типам сообщений,либо вы можете изменить стандартную «структуру перезаписи поиска»,чтобы также включить тип сообщения,а затем повторно сгенерировать правила (есть четыре правила: одно стандартное,одно с разбиением на страницы) и два для кормов). Поскольку WP_Rewrite::generate_rewrite_rules()
генерирует правила на каждом "уровне каталога" ,вы получите правила для /search/[keyword]/section/[post_type]/
,/search/[keyword]/section/
и /search/[keyword]/
. Среднее правило не нужно,но не помешает его соблюдать.
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 );
}
Чтобы проверить правила,используйте мой плагин анализатора 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.
Я хотел бы знать,как я могу переписать URL поиска,который также содержит дополнительную переменную запроса,в красивую постоянную ссылку,используя
wp_redirect
и хукtemplate_redirect
.Я взял код из плагина Nice Search ,который отлично работает для изменения
http://example.com?s=africa
вhttp://example.com/search/africa
:Но я использую раскрывающийся список выбора в сочетании с плагином Relevanssi ,чтобы посетители могли сузить область поиска до конкретный тип сообщения. Это добавляет переменную запроса
post_type
,напримерhttp://example.com?s=africa&post_type=features
. Я бы хотел,чтобы URL-адрес выглядел примерно так:http://example.com/search/africa/section/features
.Код Nice Search приводит к потере переменной запросаpost_type. Итак,я попробовал следующий код:
но WordPress теперь считает,что поисковым запросом является
africa/section/features
.Есть ли способ сохранить поисковый запрос и переменную запроса в красивой постоянной ссылке?
Спасибо Саймон