排除当前帖子和粘滞帖子

时间:2014-04-02 作者:Wouter van der Zee

在一个帖子页面上,我有一个侧栏,显示多达三篇其他相关帖子。如何排除粘性帖子和当前帖子?

我知道如何在WP\\u查询中使用post\\u not\\u in来排除当前帖子和粘性帖子,请参见下面的代码示例。但是我想你不能在同一个查询中两次使用post\\u not\\u in。有什么建议吗?

$current_post_ID = get_the_ID();

        $args = array(
            \'post_type\' => \'post\',
            \'post_status\' => \'publish\',
            \'order\' => \'DESC\',
            \'orderby\' => \'date\',
            \'posts_per_page\' => 3,
            \'post__not_in\' => get_option( \'sticky_posts\' )
            \'post__not_in\' => array($current_post_ID)
        );

2 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

只要参数数组是WP核心函数中的函数参数,就会通过wp_parse_args 而且几乎总是这样extracted 转换为单个变量
也就是说,不可以使用同一个参数两次。

您要做的是这样的:

$exclude = get_option( \'sticky_posts\' );
$exclude[] = get_the_ID();

$args = array(
    \'post_type\' => \'post\',
    \'post_status\' => \'publish\',
    \'order\' => \'DESC\',
    \'orderby\' => \'date\',
    \'posts_per_page\' => 3,
    \'post__not_in\' => $exclude
);
顺便说一句,你还漏掉了一个逗号。

SO网友:Marc Dingena

您应该将当前帖子的ID添加到粘性帖子的ID数组中,并将此单个数组传递给post__not_in:

$current_post_ID = get_the_ID();

$excluded_ids = get_option( \'sticky_posts\' );
$excluded_ids[] = $current_post_ID;

$args = array(
    \'post_type\' => \'post\',
    \'post_status\' => \'publish\',
    \'order\' => \'DESC\',
    \'orderby\' => \'date\',
    \'posts_per_page\' => 3,
    \'post__not_in\' => $excluded_ids
);
还请注意,您没有在第一个post__not_in. 这可能会导致问题,因为post__not_in 未被识别为数组的另一个元素。

结束

相关推荐