Андрей
Высший разум
(428578)
7 лет назад
А если так:
$args = array( 'posts_per_page' => 4, 'offset'=> 0, 'post__not_in'=>array($post->ID));
АлександрВоробьёвЗнаток (294)
7 лет назад
Вот не знаю, что я делаю не так, но не работает.
Есть один момент: при первом запуске после добавления post__not_in или exclude, если я глюков не ловлю, срабатывает, пост исключается, но любой следующий запуск - и исключение не работает. Даже после перезапуска браузера, обновления страницы через Ctrl + F5 или открытия страницы в режиме инкогнито в хроме.
Либо один раз затупил и так показалось.
Но не получается, почему-то.
АлександрВоробьёвЗнаток (294)
7 лет назад
Я нашёл, в чём прокололся! Я - идиот!
У меня выше тоже есть виджет (самых интересных статей) с функцией query_posts, но я не поставил после неё wp_reset_query(), и, соответственно, следующий виджет брал в качестве id самую интересную статью! Поэтому новые не фильтровались.
Ну, хоть увидел, исправил
Metotron
Искусственный Интеллект
(114866)
7 лет назад
foreach( $myposts as $pst )
{
if ($pst->ID == $post->ID) continue;
setup_postdata($post);
}
Правда, надо тогда брать 5 постов на страницу и в foreach делать break, если дошли до 4.
А вообще, неплохо бы вывести в var_dump() весь $myposts и $post->ID
АлександрВоробьёвЗнаток (294)
7 лет назад
Я прошу прощения, но вырванный из контекста не смог, видимо, в нужное место вставить код. Куда бы ни писал, в итоге получаю ошибку при выполнении.
Например:
<?php
global $post;
$args = array( 'posts_per_page' => 4, 'offset'=> 0, );
$myposts = get_posts( $args );
foreach( $myposts as $pst )
{
if ($pst->ID == $post->ID) continue;
setup_postdata($post);
}
?>
Или глупостями занимаюсь? Не то заменил?
АлександрВоробьёвЗнаток (294)
7 лет назад
Я нашёл, в чём прокололся! Я - идиот!
У меня выше тоже есть виджет (самых интересных статей) с функцией query_posts, но я не поставил после неё wp_reset_query(), и, соответственно, следующий виджет брал в качестве id самую интересную статью! Поэтому новые не фильтровались.
Ну, хоть увидел, исправил
<?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); ?>
Но не удаётся. Может быть, кто-то сможет острым глазом или опытным взглядом определить, где промах? Чего именно в коде не хватает для исключения текущей записи?