wake-up-neo.net

So legen Sie Beiträge pro Seite mit WP_Query () fest

Ich versuche, die Anzahl der posts_per_page mithilfe meiner eigenen Variablen dynamisch festzulegen. Dieser Code funktioniert gut:

query_posts( $query_string  . "&posts_per_page=" . $myvar )
// then display the loop using get_template_part( 'loop' );

Das funktioniert gut, aber ich würde gerne wissen, wie man es mit $ wp_query anstelle von query_posts macht. Dies funktioniert jedoch nicht:

$wp_query->set('posts_per_page', $myvar)
// then display the loop using get_template_part( 'loop' );

Dies hat keinen Einfluss auf die Anzahl der angezeigten Beiträge. Wende ich die Set-Methode falsch an oder fehlt mir etwas?

3
supertrue

query_posts führt die Abfrage erneut durch (löscht die aktuelle wp_query und erstellt eine neue und führt die Abfrage dann mit den von Ihnen übergebenen Parametern durch)

Um dasselbe Verhalten zu erzielen, nachdem Sie den neuen Parameter mit set_var festgelegt haben, müssen Sie die Datenbank erneut abfragen

 $wp_query->set('posts_per_page', 1);
 $wp_query->query($wp_query->query_vars);
12
hacksy

wenn Sie query_posts mit einer geänderten Abfrage in Ihrer Vorlage aufrufen, führen Sie tatsächlich eine andere Abfrage aus und verwerfen das Original. Der Versuch, eine Abfragevariable in Ihrer Vorlage festzulegen, funktioniert nicht, da die ursprüngliche Abfrage bereits ausgeführt wurde. Um $wp_query->set() zu verwenden, müssen Sie einbinden, bevor die Datenbank abgefragt wird, zum Beispiel nach pre_get_posts.

2
Milo

Warum müssen Sie $wp_query->set() überhaupt verwenden?

Kannst du nicht einfach benutzen:

<?php
$my_custom_query_args = array(
    'posts_per_page' => $myvar
);
$my_custom_query = new WP_Query( $my_custom_query_args );
?>
1
Chip Bennett