web-dev-qa-db-ja.com

特定の投稿を最新の投稿ページから隠すことはできますか?

自分が属するカテゴリのページにのみ表示されるようにしたいという投稿があるとしましょう。問題は、この投稿が最新の投稿ページにも表示されることです。

最新の投稿ページからこの投稿を非表示にして、投稿のカテゴリのページにのみ表示する方法はありますか?

2
Renato Lochetti
function exclude_single_posts_home($query) {
  if ($query->is_home() && $query->is_main_query() && !is_admin()) {
    $query->set('post__not_in', array(post-id));
  }
}

add_action('pre_get_posts', 'exclude_single_posts_home');

出典: pre_get_posts

2
Brad Dalton

あなたはコアの "Page for Posts"設定を使っているので、あなたが望む特定のIDを削除するために素晴らしい pre_get_postsアクション を使うことができるはずです。除外します。

これはあなたのfunctions.phpファイルまたは/mu-plugins/プラグインでうまくいくはずです。

wpse94273_hide_post( $query ) {
    // only remove post ID from page_for_posts and in the main query
    if( $query->is_home() && $query->is_main_query() ) {
        // remove specific page ID from query
        query->set( 'post__not_in', array( {your post id} ) );
    }
}
add_action( 'pre_get_posts', 'wpse_94273_hide_post' );

"{your post id}"を除外したい投稿のIDに置き換えます。これはarrayなので、必要に応じて複数のIDをカンマで区切って入力できます。

投稿IDが変更された場合は、設定APIを使用して除外するIDを保存するための何らかのオプションを設定する必要があります。

1
mrwweb

あなたの質問は理解するのが難しいです。あなたは特定の投稿や何か自動化を意味しますか?あなたが特定の投稿を意味していて最近の投稿をループするためにwp_query/query postsを使用している場合は、このパラメータを追加できます。

'post__not_in' => array($postId)

クエリ例:

$relatedargs = array(
    'post__not_in'      => array($postId) // THIS IS THE LINE
);
$the_query = new WP_Query( $relatedargs );

// The Loop
if( $the_query->have_posts() ) {
while ( $the_query->have_posts() ) : $the_query->the_post();

// YOUR LOOP HERE

endwhile; 
}

お役に立てれば ;

0
Sagive SEO