Наверное по заголовку не совсем понятно, о чем речь. Итак, предположим, что есть страница для рубрик, archive.php (ну или category.php, это не важно).
Мы создали новый тип постов, например events, (ивенты) но в рубриках они ничерта не появились. Ну то есть в админке при создании ивента мы приписали ему какую-либо из рубрик, но толку нет.
Первое решение, которое напрашивается, это изменить в начале файла цикл при помощи query_posts. Окей, сделали.
$params = array( 'post_type' => array('post', 'events'), 'posts_per_page' => 7 // должен быть равен параметру в настройках чтения ); query_posts( $params ); |
В итоге перестала работать постраничная навигация.
Дело в том, что в основном цикле есть ещё некоторые параметры, которые необходимо учитывать. И сделать это можно двумя способами:
Способ 1.
Этот код вставляется непосредственно на страницах category.php, tag.php, archive.php, search.php и так далее.
global $wp_query; $params = array( 'post_type' => array('post', 'events') // posts_per_page нахрен не нужен, пусть берется из основного цикла ); $params = array_merge( $wp_query->query, $params ); query_posts( $params ); |
Способ 2.
Сделаем всё то же самое, но при помощи фильтра. Код засунуть в functions.php, находящийся в папке с текущей темой.
function tr_pre_redefining_query($query) { if ($query->is_category) { // вот оно, определение нужной страницы $query->set('post_type', array('post', 'events')); } return $query; } add_filter('pre_get_posts', 'tr_pre_redefining_query'); |
Источник: misha.blog