При работе с WordPress вы можете столкнуться с ситуациями, когда вам необходимо исключить определенные идентификаторы сообщений из результатов WP_Query. Это может быть полезно, если вы хотите отфильтровать определенные сообщения или создать собственные запросы. В этой статье мы рассмотрим несколько методов с примерами кода для достижения этой функциональности.
Метод 1: использование параметра postnot_in.
Самый простой способ исключить идентификаторы сообщений из WP_Query — использовать параметр post not_in. Этот параметр принимает массив идентификаторов сообщений, которые вы хотите исключить. Вот пример:
$args = array(
'post_type' => 'post',
'post__not_in' => array(1, 2, 3), // Exclude posts with IDs 1, 2, and 3
);
$query = new WP_Query($args);
while ($query->have_posts()) {
$query->the_post();
// Display the post content
}
wp_reset_postdata();
Метод 2: использование хука «pre_get_posts».
Другой подход — использовать хук «pre_get_posts», который позволяет вам изменять основной запрос до его выполнения. Этот метод полезен, если вы хотите исключить идентификаторы сообщений из всех запросов на определенной странице или шаблоне. Вот пример:
function exclude_post_ids($query) {
if ($query->is_home()) { // Modify the condition according to your needs
$query->set('post__not_in', array(1, 2, 3)); // Exclude posts with IDs 1, 2, and 3
}
}
add_action('pre_get_posts', 'exclude_post_ids');
Метод 3: использование фильтра «posts_where».
Фильтр «posts_where» позволяет добавлять пользовательские условия SQL в предложение WHERE запроса. Вы можете использовать этот фильтр, чтобы исключить определенные идентификаторы сообщений. Вот пример:
function exclude_post_ids($where, $query) {
global $wpdb;
$excluded_ids = array(1, 2, 3); // Exclude posts with IDs 1, 2, and 3
if ($query->is_main_query() && !empty($excluded_ids)) {
$ids = implode(',', $excluded_ids);
$where .= " AND {$wpdb->posts}.ID NOT IN ({$ids})";
}
return $where;
}
add_filter('posts_where', 'exclude_post_ids', 10, 2);
В этой статье мы рассмотрели три различных метода исключения идентификаторов сообщений из WP_Query в WordPress. В зависимости от ваших конкретных требований вы можете выбрать метод, который лучше всего соответствует вашим потребностям. Внедрив эти методы, вы сможете лучше контролировать свои запросы и получать более персонализированные результаты.
Не забудьте тщательно протестировать свой код после реализации любого из этих методов, чтобы убедиться, что они работают должным образом. Приятного кодирования!