1

カテゴリの最新の投稿のみをフロントページから除外したい。同じカテゴリの他のすべてが表示されます。私はこれを理解できないようです。これが私がこれまでに得たものですが、それはフロントページからカテゴリー全体を除外します。

function exclude_category2($query) { 
if ( $query->is_home ) { 
$query->set('cat', '-1,-4,-36'); 
} 
return $query; 
} 
add_filter('pre_get_posts', 'exclude_category2'); 

助けてくれてありがとう!

4

1 に答える 1

0

template_redirectgokが提案するように、グローバル$ posts配列から最上位の要素を削除するようなフックを使用できますarray_shift(ある程度、彼は実際にそれを行う方法を述べていませんでした)。その場合は次のようになります

add_action( 'template_redirect', function() {
    global $posts;
    array_shift( $posts );
});

しかし、もっとエレガントなアプローチはこれだと思います

add_action( 'loop_start', function( $args ) {
    $args[0]->next_post();
});

これをfunctions.phpに入れると、Wordpressループの開始時に、自動的に次の投稿に移動します。つまり、常に最初の投稿をスキップします。

特定のページでのみこれを実行する場合はis_home()、関数内のように関連するテンプレートタグを使用します。if ( is_home() ) $args[0]->next_post();

PHPバージョン>=5.3を使用していない場合、PHPの下位バージョンは無名関数をサポートしていないため、関数に名前を付ける必要があります。

于 2013-01-23T22:04:55.827 に答える