Intereting Posts
Корзина Страница – Woocommerce Удалите определенные кнопки из wp_editor () Как получить URL-адрес изображения из media_sideload_image? Как работать на промежуточном веб-сайте без потери изменений БД? можем ли мы предоставить пользователю логин в 2 установках wordpress в 2 поддоменах на одном сервере? Разрешить роли ниже администратора для добавления подписчиков Потерянный пароль пустая ошибка поля переадресация на пользовательский логин Как сделать плагин для автоматического добавления элемента в навигационное меню Сайт взломан вредоносной программой Где я должен добавить необходимый код для добавления дополнительного атрибута в массив тегов kses? Лучший код для формата сообщения? CSS, добавленный через customizer, пренебрегает необходимостью детской темы? 2 веб-сайта 1 база данных … Как я могу настроить время подачи RSS, чтобы обновить канал быстрее Как использовать is_feed () для таргетинга на фид категории?

Отображение персонализированного типа сообщений на страницах категорий, но не в списках блога

Я думаю, что это довольно простая проблема, но у меня нет головы.

Вопрос: как я могу получить свои пользовательские сообщения, чтобы показывать только в архивах категорий, но не на странице с объявлениями блога?

Предпосылки: У меня есть пользовательское сообщение типа «видео», с has_archive true и «таксономии» => массив ('category', 'post_tag'). Я хочу использовать стандартные категории с этим настраиваемым типом сообщения.

Я успешно просмотрел страницы своей категории, установив post_type и используя hook pre_get_posts следующим образом:

function my_query_post_type($query) { if ( is_home() && false == $query->query_vars['suppress_filters'] ) $query->set( 'post_type', array( 'post', 'video', 'attachment' ) ); return $query; } add_filter('pre_get_posts', 'my_query_post_type'); 

Если я не использую pre_get_posts, то мои видео не отображаются – как и ожидалось.

Тем не менее, теперь моя страница с сообщениями в блоге показывает пользовательские сообщения – как и ожидалось, потому что я изменил post_type в запросе.

Вопрос: как я могу получить свои пользовательские сообщения, чтобы показывать только в архивах категорий, но не на странице с объявлениями блога?

Solutions Collecting From Web of "Отображение персонализированного типа сообщений на страницах категорий, но не в списках блога"

Это может быть слишком упрощенным, но вы пытались изменить is_home() на is_category() в этой строке:

 if ( is_home() && false == $query->query_vars['suppress_filters'] ) 

т.е. изменить его на это:

 if ( is_category() && false == $query->query_vars['suppress_filters'] ) 

Во всяком случае, стоит …

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

Поэтому я добавил !is_admin() который устранил проблему.

 is_category() && (!is_admin()) && false == $query->query_vars['suppress_filters'] 

мой URL-адрес был следующим уродливым, после второй попытки повторного фильтрации по категории во второй раз:

edit.php?post_status=all&post_type=Array&_wpnonce=09d0e899fa&_wp_http_referer=%2Fironglasslighting.org%2Fwp-admin%2Fedit.php%3Fs%26post_status%3Dall%26post_type%3Dproduct%26action%3D-1%26m%3D201112%26cat%3D31%26paged%3D1%26mode%3Dlist%26action2%3D-1&action=-1&m=201112&cat=27&paged=1&mode=list&action2=-1