Intereting Posts
wordpress custom loop по возрастанию по убыванию сообщений по настраиваемому полю Как разработать настраиваемое перенаправление URL-адресов Обновить проблему с update_option () в сочетании с register_setting () Для чего предназначена папка wordpress wp-includes? Подстраницы получают ошибку 404 после изменения URL-адреса родительской страницы Разрешить пользователям использовать WP Customizer, но отключить кнопку сохранения Есть ли способ копирования / вставки, дублирования или автогенерации сообщений для быстрого тестирования? Измените параметр администратора «Default Avatar» с помощью функции functions.php Как я могу аутентифицировать пользователей WP из расширения chrome? почему add_action ('the_content) перезаписывает мою страницу Невозможно установить плагины, даже если у www-data есть права на запись Добавление разных фонов для разных страниц Добавление настраиваемого фильтра meta_key к сообщениям Добавить загрузчик изображений в панели администратора Я получаю бесполезные алфавиты в ссылках изображений

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

У меня есть фильтр pre_get_posts, чтобы показывать исключение некоторых сообщений на главной странице. Но я не могу исключить сообщения, которые закрыты для комментариев. Как мне это сделать?

У меня есть:

function wp_filter_pre_get_posts( $query ) { // Only modify when on homepage & only the main query if ( $query->is_home() && $query->is_main_query() ) { $query->set( 'comment_status', 'open' ); $query->set( 'tag__not_in', '188' ); $query->set( 'posts_per_page', '3' ); } } add_filter( 'pre_get_posts', 'wp_filter_pre_get_posts' ); 

Исключая пост из категории 188, отлично работает, но исключая сообщения с закрытыми комментариями. Любые намеки?

Solutions Collecting From Web of "Показывать только сообщения, которые можно прокомментировать"

Поскольку comment_status не является встроенным аргументом запроса, но вы можете легко реализовать его:

 function wpse_214323_query_by_comment_status( $where, $wp_query ) { global $wpdb; if ( ! empty( $wp_query->query_vars['comment_status'] ) ) { $status = $wp_query->query_vars['comment_status']; if ( $status !== 'open' ) $status = 'closed'; $where .= " AND $wpdb->posts.comment_status = '$status'"; } return $where; } add_filter( 'posts_where', 'wpse_214323_query_by_comment_status', 10, 2 ); 

Используйте это в дополнение к существующему коду, теперь вы можете запросить 'comment_status' => 'open/closed'