Ignore_sticky_postsがあなたのカスタムクエリからスティッキー投稿を除外するために使用されていることを私達は皆知っています。
しかし、なぜコーデックスページ https://codex.wordpress.org/Sticky_Posts に、スティッキー投稿のクエリでignore_sticky_postsが使われているのですか。
$args = array(
'posts_per_page' => 1,
'post__in' => get_option( 'sticky_posts' ),
'ignore_sticky_posts' => 1
);
$query = new WP_Query( $args );
これはとても混乱して意味がありません、あなたはそれを望んでいますが、それでもあなたはそれを除外しますか?
ignore_sticky_posts
はあなたのカスタムクエリからスティッキーポストを除外するために使用されることを私達は皆知っています。
ignore_sticky_posts
の意味自然な英語ではありますが、ignore_sticky_posts
はWordPressがクエリからのすべての付箋投稿を無視するべきであるように聞こえます、実際にはそれはWordPressがすることではありません。代わりに、次のように'ignore_sticky_posts' => 1
引数を読む必要があります。
ignore_sticky_posts
がtrue
または1
に設定されている場合、WordPressはカスタムクエリ内のスティッキーポストを設定するためのプロシージャを無視するになります。
ignore_sticky_posts
が設定されていないときにWordPressがすること:'ignore_sticky_posts' => 1
が何をするのかを明確に理解するためには、ignore_sticky_posts
引数が設定されていない場合、またはfalse
または0
(デフォルト)に設定されている場合のWordPressの動作を理解する必要があります。
スティック投稿の一部である投稿がクエリ結果内にある場合、WordPressはそれらをクエリ結果の一番上にプッシュします。
スティッキーポストがクエリ結果内に存在しない場合、WordPressはそれらのスティッキーポストをデータベースから再度取得し、それらをクエリ結果の先頭に設定します。
そのため、引数が'ignore_sticky_posts' => 1
に設定されている場合、WordPressは単に上記の手順を無視しますのようになります。特にそれらを除外するものではありません。そのためにはpost__not_in
引数を設定する必要があります。
それでは、コーデックスから例を見てみましょう。
$args = array(
'posts_per_page' => 1,
'post__in' => get_option( 'sticky_posts' ),
'ignore_sticky_posts' => 1
);
$query = new WP_Query( $args );
ここでコーデックスは'ignore_sticky_posts' => 1
効率的にするために、これ以上のことはしないを設定するだけです。持っていなくても、あなたは同じ期待された結果を得るでしょう:
$args = array(
'posts_per_page' => 1,
'post__in' => get_option( 'sticky_posts' )
);
$query = new WP_Query( $args );
ただし、この場合、'ignore_sticky_posts' => 1
引数が設定されていないため、(この例からの)これらの結果はすべてスティッキポストにすぎませんが、WordPressはスティッキポストを結果の先頭に設定する手順をすべて実行します。
WordPressで何かを学ぶ最善の方法は、コアのCODEを調べることです。もっと明確に理解するために、 WordPress CODEのこの部分 を調べてください。