将当前帖子从最近帖子循环中排除

时间:2011-09-17 作者:Chad

从最近的帖子查询中排除我正在查看的当前帖子的最佳方法是什么。非常感谢。

<?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) :
            ?>

3 个回复
最合适的回答,由SO网友:Brian Fegter 整理而成

这是post__not_in arg应该对您非常有用:

$args = array(
    \'numberposts\' => 5,
    \'offset\' => 0,
    \'category\' => 7,
    \'post__not_in\' => array( $post->ID )
);
$myposts2 = get_posts($args);

SO网友:Mav2287

将此添加到$参数

\'post__not_in\' => array( get_the_ID() )
这样,您就不必处理获取当前帖子ID的问题,并且可能会避免获取ID时出现错误。get\\u the\\u ID()函数只需为您获取ID,这样您就不必处理或执行任何操作。

SO网友:Vijay Lathiya

在活动主题函数中添加以下代码。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\' );

结束

相关推荐

为什么‘EXCLUDE_FROM_SEARCH’从WP_QUERY中排除自定义帖子类型?

在WP 3.1中,似乎设置\'exclude_from_search\' = TRUE 对于自定义帖子类型,不仅从前端的搜索中排除帖子类型,而且从使用\'post_type\' = \'all\'.我可以想象很多情况下,插件开发人员希望访问所有帖子类型,甚至是那些被排除在前端搜索之外的帖子类型。这是一个bug,还是只是文档记录不足?背景故事:我有一个自定义的帖子类型,使用自定义的“帖子到期日期”字段。为了自动取消发布过期的自定义帖子,我创建了一个内容过期插件,该插件使用wp\\u schedule\\u