Intereting Posts
фильтр wp_query результат с настраиваемыми значениями поля Почему я не могу отобразить attachment_image_src с пользовательским размером? Как получить сообщения, упорядоченные по их категориям? Проблема пути – получение «localhost» вместо IP Когда использовать WP_query (), query_posts () и pre_get_posts Ajaxify Form, которая отправляет на ту же страницу для отображения данных о публикации eBooks скачать сайт, страницу или сообщение? Почему так много популярных тем WordPress «в штучной упаковке» на 940 пикселей? История полевого поля Не удается получить доступ к новой установке WP в подкаталоге Перемещенный сайт WordPress на новый сервер, права на каталоги не работают правильно wp_update_user не обновляется, а update_user_meta Разбиение на страницы для сообщений внутри определенной категории WordPress admin никогда не заканчивает сохранение страницы на сайте с большим количеством страниц WordPress Term для пользовательского списка

Как фильтровать архивы как по категориям, так и по тегам?

У меня есть архив для каждой категории / тега. Теперь я хочу создать собственный архив, используя следующую структуру URL:

http://example.com/cat1/subcat1/tag/tag1 

Это должно показать все сообщения, имеющие тег tag1 и принадлежащие cat1 и subcat1

Как создать этот архив?

То, что вы ищете, это пользовательский поиск, который можно создать с помощью правил перезаписи. То, что я собираюсь сделать, – создать правило, добавляющее некоторые запросы к URL.

Сначала давайте определим тег перезаписи, чтобы WordPress распознал наш собственный URL.

 function my_rewrite_tag() { add_rewrite_tag('%custom-categories%', '([^&]+)'); } add_action('init', 'my_rewrite_tag', 10, 0); 

Теперь мы создаем правило для перенаправления наших данных на другой путь.

 function my_rewrite_rule() { add_rewrite_rule( '^custom-categories/([^/]*)/([^/]*)/([^/]*)/([^/]*)/?', 'index.php?post_type=post&customCat=$matches[1]&customSubCat=$matches[2]&customTag1=$matches[3]&customTag2=$matches[4]', 'top' ); } add_action('init', 'my_rewrite_rule', 10, 0); 

Поэтому, если мы попытаемся получить доступ:

 http://example.com/custom-categories/cat1/subcat1/tag/tag1 

мы фактически будем перенаправлены на:

 http://example.com/index.php?post_type=post&customCat=cat1&customSubCat=subcat1&customTag1=tag&customTag2=tag1 

Какой архив для обычных типов сообщений. Теперь это трюк. Мы изменим запрос, если эти данные будут установлены:

 // We only want to do this if every data is set, so let's check for them all if(isset($_['customCat']) && isset($_['customSubCat']) && isset($_['customTag1']) && isset($_['customTag2'])) { // Now alter the main query function photogram_include_blog_posts($query) { if ( !is_admin() && $query->is_main_query() && $query->is_archive() ) { // Set the tags $query->set('tag__in', array($_['customTag1'],$_['customTag2'])); // Set the categories $query->set('category__in', array($_['customSubCat'],$_['customCat'])); } } add_action( 'pre_get_posts', 'photogram_include_blog_posts' ); } 

Поэтому мы перенаправляемся на страницу архива, в которой выполняется наш пользовательский запрос. Готово.