web-dev-qa-db-ja.com

最近の投稿のループから現在の投稿を除外

この最近の投稿のクエリから、現在表示している投稿を除外する最善の方法は何でしょうか。ありがとうございました!

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

これはpost__not_in引数があなたのためにダンディに働くはずです:

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

これをあなたの$ argsに追加してください。

'post__not_in' => array( get_the_ID() )

これにより、現在の投稿IDを取得する必要がなくなり、ID取得時のエラーを回避できる可能性があります。 get_the_ID()関数は単にあなたのためにIDを取得するので、あなたは何もしたり対処したりする必要はありません。

1
Mav2287

アクティブテーマの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' );
1
Vijay Lathiya