Исключить Текущий Пост из Цикла Последних Записей

18 сент. 2011 г., 00:13:16
Просмотры: 51.9K
Голосов: 12

Какой самый лучший способ исключить текущий просматриваемый пост из этого запроса последних записей? Спасибо!

<?php
            global $post;
            if (in_category('top-lists')) {
                $myposts2 = get_posts('numberposts=5&offset=0&category=7');
            }
            else if (in_category('playlists') || in_category('playlistall')) {
                $myposts2 = get_posts('numberposts=5&offset=0&category=6,37');
            }
            else if (in_category('news') || in_category('news')) {
                    $myposts2 = get_posts('numberposts=5&offset=0&category=95');
            }
            else {
                $myposts2 = get_posts('numberposts=5&offset=0&category=-6,-7,-37,-95,-177');
            }

            foreach($myposts2 as $post) :
            ?>
0
Все ответы на вопрос 3
7
38

Аргумент post__not_in должен отлично сработать для вас:

$args = array(
    'numberposts' => 5,
    'offset' => 0,
    'category' => 7,
    'post__not_in' => array( $post->ID )
);
$myposts2 = get_posts($args);
18 сент. 2011 г. 04:08:25
Комментарии

@kaiser и Brian - Спасибо за ответ, я вставил код, но получаю ошибку map_array ----

Warning: array_map() [function.array-map]: Argument #2 should be an array in /home/sitemain/public_html/wp-includes/query.php on line 1709

Warning: implode() [function.implode]: Invalid arguments passed in /home/sitemain/public_html/wp-includes/query.php on line 1709

Chad Chad
19 сент. 2011 г. 20:38:33

Попробуй последнюю правку. Заполни аргументы в виде массива.

Brian Fegter Brian Fegter
19 сент. 2011 г. 21:01:03

Хм? Почему я? @Brian Fegter ответил. :)

kaiser kaiser
19 сент. 2011 г. 21:08:44

ха :) У меня все отлично. Всегда рад помочь.

Brian Fegter Brian Fegter
19 сент. 2011 г. 21:22:43

Идеально, спасибо всем, особенно @BrianFegter!

Chad Chad
21 сент. 2011 г. 06:53:55

Сейчас я использую этот код <?php $catquery = new WP_Query( 'cat=1&posts_per_page=5' ); ?>. Как мне интегрировать ваш вариант в мой? Спасибо!

Jornes Jornes
10 апр. 2020 г. 19:19:35

@Jornes В приведенном выше примере вы можете просто использовать 'cat' => 1, 'posts_per_page' => 5.

Brian Fegter Brian Fegter
14 апр. 2020 г. 00:05:28
Показать остальные 2 комментариев
0

Добавьте это в ваш $args

'post__not_in' => array( get_the_ID() )

Таким образом вам не придётся вручную получать ID текущей записи, что потенциально поможет избежать ошибок при получении ID. Функция get_the_ID() автоматически получает ID для вас, так что вам не нужно ничего делать вручную.

3 дек. 2018 г. 06:17:08
0

Добавьте следующий код в файл functions.php активной темы:

    function be_exclude_current_post( $args ) {
        if( is_singular() && !isset( $args['post__in'] ) )
            $args['post__not_in'] = array( get_the_ID() );
        return $args;
    }
    add_filter( 'widget_posts_args', 'be_exclude_current_post' );
28 мар. 2017 г. 15:12:38