Intereting Posts
Можно ли использовать несколько пробелов в заголовке? Нет свойства first_name или user_firstname в объекте WP_User Лучший подход при изменении Media Manager Добавление скриптов в верхний и нижний колонтитулы из плагина Как остановить перенаправление переназначения для определенного пула Я получаю 0 после результата моих запросов ajax Почему apply_filters возвращают непустую строку, когда возвращаемое значение пусто? обновить значение метаполя после как заменить get_template_part ('loop', 'tag') на явную версию? Почему несколько текстовых прерываний перестали работать в текстовом редакторе? Как получить медиа-источник текстового редактора в WordPress Можно ли использовать URL-адрес wp-plugins (Must Use Plugins) для использования в functions.php? тема childs не может переопределить header.php Отключить параметры видимости в WP Размещение фотографий и других приложений на форуме BuddyPress?

Исключить сообщения из виджета, пока сообщение отображается на домашнем, одноместном и категориях

Я использую этот виджет .

но я пытаюсь выяснить, как заставить его не отображать какие-либо сообщения, которые в настоящее время

отображается на домашней странице, в одном посте и категориях.

Другой пользователь поднял тот же вопрос здесь

Это обеспечило следующее решение:

add_filter( 'rpwe_default_query_arguments', 'rpwe_exclude_current_post' ); function rpwe_exclude_current_post( $args ) { if( is_singular() && !isset( $args['post__in'] ) ) $args['post__not_in'] = array( get_the_ID() ); return $args; } 

Он работал, но только для отдельных сообщений, а не для сообщений на домашней странице или в категориях.

Solutions Collecting From Web of "Исключить сообщения из виджета, пока сообщение отображается на домашнем, одноместном и категориях"

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

Текущий массив сообщений, который отображается на любой заданной странице, сохраняется в свойстве $posts основного запроса или любого настраиваемого экземпляра WP_Query . Именно отсюда вам нужно извлечь все идентификаторы сообщений, чтобы перейти к $args['post__not_in'] в вашем коде.

Вы можете попробовать следующее в своем коде выше

 global $wp_query; $post_ids = wp_list_pluck( $wp_query->posts, 'ID' ); 

Затем вы можете $post_ids в $args['post__not_in']

 $args['post__not_in'] = $post_ids; 

Вам просто нужно передать правильные условные обозначения для целевых страниц