Добавление настраиваемых типов сообщений в archive.php

У меня есть 3 разных типа сообщений в моем блоге. Когда я нажимаю на категорию настраиваемого сообщения, я перенаправляю на страницу 404, потому что по умолчанию archive.php не распознает настраиваемые типы сообщений.

Я нашел это решение (и другие, используя тот же подход) в нескольких разных местах:

add_filter('pre_get_posts', 'query_post_type'); function query_post_type($query) { if(is_category() || is_tag()) { $post_type = get_query_var('post_type'); if($post_type) $post_type = $post_type; else $post_type = array('post','cpt'); // replace cpt to your custom post type $query->set('post_type',$post_type); return $query; } } 

проблема в том, что на боковой панели я также использую цикл WP_Query для отображения последних сообщений из каждой категории пользовательских сообщений. Это решение отлично работает для страницы архива, но оно запутывает (фактически объединяет все мои типы сообщений) с моим скриптом боковой панели.

Я ищу решение, которое не использует pre_get_posts в течение нескольких часов, и я ничего не нашел. Помощь была бы действительно оценена.

Solutions Collecting From Web of "Добавление настраиваемых типов сообщений в archive.php"

В действии pre_get_posts убедитесь, что объект запроса is_main_query только на основной архивный запрос и исключает дополнительные запросы.

 add_action('pre_get_posts', 'query_post_type'); function query_post_type($query) { if($query->is_main_query() && ( is_category() || is_tag() )) { $query->set( 'post_type', array('post','cpt') ); } }