Если вы пользователь WordPress и когда-либо сталкивались с необходимостью исключить текущий пост из цикла, вы попали по адресу. В этой статье мы рассмотрим различные методы и предоставим вам примеры кода для эффективного решения этой задачи. Исключив текущий пост из цикла, вы можете гарантировать, что он не будет отображаться в ваших шаблонах WordPress избыточно. Итак, давайте углубимся и найдем несколько практических решений!
Метод 1: использование параметра post__not_in
Параметр post__not_inпозволяет нам исключить определенные идентификаторы сообщений из цикла. Чтобы исключить текущий пост, мы можем получить его идентификатор с помощью функции get_the_ID()и передать его в параметр post__not_in. Вот пример:
$current_post_id = get_the_ID();
$args = array(
'post__not_in' => array($current_post_id),
);
$query = new WP_Query($args);
Метод 2. Использование функций post__not_inи wp_get_recent_posts()wp_get_recent_posts()позволяет получить самые последние публикации, и мы можем использовать их для исключения текущий пост из цикла. Вот пример:
$current_post_id = get_the_ID();
$recent_posts = wp_get_recent_posts(array(
'numberposts' => -1,
'exclude' => $current_post_id,
));
Метод 3. Применение пользовательского фильтра запросов
В этом методе мы можем использовать перехватчик действия pre_get_postsдля изменения запроса перед его выполнением. Вот пример:
function exclude_current_post($query) {
if (!is_admin() && $query->is_main_query()) {
$current_post_id = get_the_ID();
$query->set('post__not_in', array($current_post_id));
}
}
add_action('pre_get_posts', 'exclude_current_post');
Метод 4: исключение текущего сообщения с помощью пользовательской функции
Вы можете создать пользовательскую функцию, чтобы исключить текущее сообщение из цикла. Вот пример:
function exclude_current_post($posts) {
global $post;
$current_post_id = $post->ID;
$result = array();
foreach ($posts as $p) {
if ($p->ID != $current_post_id) {
$result[] = $p;
}
}
return $result;
}
add_filter('the_posts', 'exclude_current_post');
Реализуя любой из этих методов, вы можете легко исключить текущую публикацию из цикла WordPress. Независимо от того, предпочитаете ли вы использовать встроенные параметры или писать собственные функции, эти решения помогут вам достичь желаемого результата. Поэкспериментируйте с предоставленными примерами кода и выберите метод, который лучше всего соответствует вашим потребностям. Приятного кодирования!