自分が属するカテゴリのページにのみ表示されるようにしたいという投稿があるとしましょう。問題は、この投稿が最新の投稿ページにも表示されることです。
最新の投稿ページからこの投稿を非表示にして、投稿のカテゴリのページにのみ表示する方法はありますか?
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
あなたはコアの "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を保存するための何らかのオプションを設定する必要があります。
あなたの質問は理解するのが難しいです。あなたは特定の投稿や何か自動化を意味しますか?あなたが特定の投稿を意味していて最近の投稿をループするために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;
}
お役に立てれば ;