it-swarm.com.de

warum ignore_sticky_posts in der Abfrage nach "sticky post"

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?

7
吉 宁

Wir alle wissen, dass ignore_sticky_posts verwendet wird, um klebrige Posts von Ihrer benutzerdefinierten Abfrage auszuschließen.

- Nein, diese Annahme ist falsch.


Was 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 auf true oder 1 eingestellt ist, ignoriert WordPress die Prozedur zum Festlegen der Haftnotizen in Ihrer benutzerdefinierten Abfrage.


Was WordPress macht, wenn 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):

  1. Wenn das Abfrageergebnis Posts enthält, die Teil von Stick-Posts sind, werden diese von WordPress an den oberen Rand des Abfrageergebnisses verschoben.

  2. 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.


Erklärung des Codex-Beispiels:

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 .

13
Fayaz