Wir alle wissen, dass ignore_sticky_posts verwendet wird, um sticky post von Ihrer benutzerdefinierten Abfrage auszuschließen.
Aber warum verwenden sie auf der Codex-Seite https://codex.wordpress.org/Sticky_Posts ignore_sticky_posts, um sticky posts abzufragen?
$args = array(
'posts_per_page' => 1,
'post__in' => get_option( 'sticky_posts' ),
'ignore_sticky_posts' => 1
);
$query = new WP_Query( $args );
Das ist so verwirrend und macht keinen Sinn, du willst es und schliesst es doch aus?
Wir alle wissen, dass
ignore_sticky_posts
verwendet wird, um klebrige Posts von Ihrer benutzerdefinierten Abfrage auszuschließen.
ignore_sticky_posts
bedeutet:Obwohl sich ignore_sticky_posts
in natürlichem Englisch so anhört, als ob WordPress alle klebrigen Beiträge aus der Abfrage ignorieren sollte, ist dies in Wirklichkeit nicht das, was WordPress tut. Stattdessen sollten Sie das Argument 'ignore_sticky_posts' => 1
folgendermaßen lesen:
Wenn
ignore_sticky_posts
auftrue
oder1
eingestellt ist, ignoriert WordPress die Prozedur zum Festlegen der Haftnotizen in Ihrer benutzerdefinierten Abfrage.
ignore_sticky_posts
nicht gesetzt ist:Um zu verstehen, was 'ignore_sticky_posts' => 1
tut, müssen Sie wissen, was WordPress tut, wenn das Argument ignore_sticky_posts
nicht oder auf false
oder 0
gesetzt ist (standardmäßig):
Wenn das Abfrageergebnis Posts enthält, die Teil von Stick-Posts sind, werden diese von WordPress an den oberen Rand des Abfrageergebnisses verschoben.
Wenn das Abfrageergebnis keine klebrigen Posts enthält, ruft WordPress alle diese klebrigen Posts erneut aus der Datenbank ab und setzt sie an die Spitze des Abfrageergebnisses.
Wenn das Argument also auf 'ignore_sticky_posts' => 1
gesetzt ist, ignoriert WordPress einfach die obige Prozedur , das ist alles. Es schließt sie nicht speziell aus. Dafür müssen Sie das Argument post__not_in
setzen.
Kommen wir nun zum Beispiel aus dem Codex:
$args = array(
'posts_per_page' => 1,
'post__in' => get_option( 'sticky_posts' ),
'ignore_sticky_posts' => 1
);
$query = new WP_Query( $args );
Hier setzt der Codex nur 'ignore_sticky_posts' => 1
um effizient zu sein, nichts weiter . Auch ohne es zu haben, erhalten Sie das gleiche erwartete Ergebnis:
$args = array(
'posts_per_page' => 1,
'post__in' => get_option( 'sticky_posts' )
);
$query = new WP_Query( $args );
Da in diesem Fall jedoch das Argument 'ignore_sticky_posts' => 1
nicht gesetzt ist, führt WordPress unnötigerweise alle diese Schritte aus, um Haftnotizen an die Spitze der Ergebnisse zu setzen, obwohl alle diese Ergebnisse (aus diesem Beispiel) nur Haftnotizen sind.
Der beste Weg, etwas in WordPress zu lernen, ist, den Kern-CODE zu untersuchen. Zum besseren Verständnis lesen Sie diesen Teil von WordPress CODE .