


Wordpress. Исключить текущую запись из выборки в php
Есть кусок кода в текстовом виджете (в functions.php разрешён php-код для текстового виджета):
<?php
global $post;
$args = array( 'posts_per_page' => 4, 'offset'=> 0, );
$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post); ?>
из него необходимо исключить текущую запись, то есть ту запись, на одной странице с которой выполняется код.
Пытаюсь реализовать добавлением параметра exclude
<?php
global $post;
$args = array( 'posts_per_page' => 4, 'offset'=> 0, 'exclude'=>$post->ID);
$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post); ?>
Но не удаётся. И ещё кажется, что первый раз срабатывает, а потом после обновления страницы или перехода к другой записи опять правило исключения не работает.
Может быть, кто-то сможет острым глазом или опытным взглядом определить, где промах? Чего именно в коде не хватает для исключения текущей записи?
Вот снова. Сделал код
<?php
global $post;
$args = array( 'posts_per_page' => 4, 'offset'=> 0, 'exclude'=>array($post->ID),);
$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post); ?>
т. е. добавил array к $post->ID
Обновляю страницу, ура, текущая страница не попадает в виджет. Потом перехожу к другой записи - все попадают. Возвращаюсь к первой записи - снова все попадают. Почему-то только один раз срабатывает
Перезагружаю браузер и вновь: первое посещение страницы - правило исключения срабатывает. Для всех последующих - не срабатывает.
<?php wp_reset_postdata() ?> последней строкой прописано
Вообще, странновато выводите записи. Откуда код?
Что за виджет? Случайные записи?