Cum se setează numărul de articole pe pagină folosind WP_Query()

26 sept. 2011, 20:14:26
Vizualizări: 65.7K
Voturi: 4

Încerc să setez numărul de posts_per_page în mod dinamic folosind propria mea variabilă. Acest cod funcționează bine:

query_posts( $query_string  . "&posts_per_page=" . $myvar )
// apoi afișează loop-ul folosind get_template_part( 'loop' );

Asta funcționează bine, dar aș dori să știu cum să fac acest lucru folosind $wp_query în loc de query_posts. Totuși, următorul cod nu funcționează:

$wp_query->set('posts_per_page', $myvar)
// apoi afișează loop-ul folosind get_template_part( 'loop' );

Acest lucru nu are niciun efect asupra numărului de articole afișate. Folosesc metoda set incorect sau îmi scapă ceva?

0
Toate răspunsurile la întrebare 4
0
14

query_posts va executa din nou interogarea (va distruge wp_query curent și va crea unul nou, apoi va face interogarea cu parametrii pe care i-ați transmis)

Pentru a obține același comportament după setarea noului parametru cu set_var, trebuie să interogați din nou baza de date folosind ceva de genul:

 $wp_query->set('posts_per_page', 1);
 $wp_query->query($wp_query->query_vars);
26 sept. 2011 20:41:29
0

când apelezi query_posts cu o interogare modificată în șablonul tău, de fapt rulezi o altă interogare și renunți la cea originală. încercarea de a seta o variabilă de interogare în șablon nu funcționează deoarece interogarea originală a avut deja loc. pentru a folosi $wp_query->set() trebuie să te conectezi înainte ca baza de date să fie interogată, de exemplu pe acțiunea pre_get_posts.

26 sept. 2011 20:39:29
1

De ce ai nevoie să folosești $wp_query->set() deloc?

Nu poți pur și simplu folosi:

<?php
$my_custom_query_args = array(
    'posts_per_page' => $myvar
);
$my_custom_query = new WP_Query( $my_custom_query_args );
?>
26 sept. 2011 21:43:18
Comentarii

Nu distrugi toți ceilalți parametri ai interogării în acest fel? Metoda ->set() ar trebui să păstreze restul argumentelor la fel, doar să modifice post_per_page. Sau greșesc?

Sean Kendle Sean Kendle
13 sept. 2021 19:36:08
1
-1

Puteți folosi

$wp_query->query_vars['posts_per_page'] = 25
27 iun. 2016 13:50:56
Comentarii

Salut! Poți să fii mai explicit cu răspunsurile tale și să explici și de ce acest răspuns ajută? Altfel, răspunsurile sunt marcate automat ca calitate scăzută de către robotul comunității. Mulțumesc. Sfat: Va trebui cel puțin să înfășori apelul într-o funcție de callback atașată la un filtru :)

kaiser kaiser
27 iun. 2016 14:35:27