Care este diferența dintre $paged și $page în WordPress?
Îmi creez paginarea pentru site. Sper că toată lumea îmi poate explica la ce servește codul de mai jos? Mulțumesc anticipat.
<?php
// Verificăm dacă există parametrul 'paged' în query
if ( get_query_var('paged') ) {
$paged = get_query_var('paged');
// Altfel, verificăm dacă există parametrul 'page'
} elseif ( get_query_var('page') ) {
$paged = get_query_var('page');
// Dacă niciunul nu există, setăm pagina curentă la 1
} else {
$paged = 1;
}
// Executăm query-ul cu parametrii de paginare
query_posts('paged='.$paged.'&posts_per_page=');
?>
Sper că înțelegeți ce sunt variabilele de interogare. Dacă nu, iată o scurtă explicație. Interogarea principală folosește WP_Query
pentru a se configura. În interogarea principală, WP_Query
utilizează variabile publice de interogare pentru a construi interogarea principală în funcție de pagina solicitată, iar paged
și page
sunt două dintre acestea. Pentru a vedea toate variabilele publice de interogare, lipiți acest cod în antetul vostru și verificați pe toate șabloanele cum sunt setate acestea în funcție de pagina interogată:
var_dump($wp_query->query_vars);
Funcția get_query_var()
este utilizată pentru a obține valorile din aceste variabile publice de interogare, iar în acest caz, acestea sunt page
și paged
.
Pentru a răspunde la întrebarea dvs., acești doi parametri și valorile lor sunt utilizați de WP_Query
pentru a calcula paginarea și, mai important, decalajul postărilor în funcție de numerele de pagină. Acest parametru asigură că postările dvs. se afișează corect atunci când navigați prin pagini.
paged
-> Utilizat pe pagina de start, pagina de blog, paginile de arhivă și pagini pentru a calcula paginarea. Prima pagină este0
, iar de acolo numărul corespunde numărului de pagină.page
-> Utilizat pe o pagină frontală statică și pe pagini unice pentru paginare. Paginarea pe aceste pagini funcționează la fel, o pagină frontală statică este tratată ca o pagină unică la paginare. Prin paginare pe pagini unice, mă refer la faptul că postările unice pot fi împărțite în mai multe pagini.
Ceea ce face codul dvs. este, în esență, să verifice dacă parametrul paged
este setat; dacă acest lucru eșuează, verifică dacă parametrul page
este setat, iar dacă nu este setat, setează pagina la 1
. Această verificare va eșua întotdeauna pe pagina 1, astfel încât $paged
va reveni întotdeauna la 1
. Pe orice altă pagină în afară de pagina unu, fie paged
, fie page
va returna true și va seta $paged
la numărul corect al paginii.
Notă finală: Nu utilizați niciodată query_posts
decât dacă aveți nevoie să stricați ceva pe pagina dvs., și credeți-mă, nu doriți asta. Utilizați întotdeauna WP_Query
pentru interogări personalizate paginate. Pentru o explicație completă despre acest lucru, vă rugăm să consultați acest articol pe care l-am scris acum ceva timp.

Mulțumesc @pieter-goosen pentru explicația foarte bună. Este paged
folosit pentru a obține pagina curentă care este vizualizată?

Da, poți folosi echo get_query_var( 'paged' );
pentru a obține numărul paginii curente pe care o vizualizezi

Explicație excelentă! Parametrul page
ia în considerare cuvântul cheie <!--nextpage-->
, care împarte un singur articol în mai multe pagini: https://en.support.wordpress.com/nextpage/view-all/

Fii conștient că o pagină de start poate fi setată ca pagină frontală statică, iar apoi se folosește `page` în loc de `paged`.
@PieterGoosen Nu sunt de acord cu observația ta finală. Dacă returnezi articole prin intermediul unui shortcode, `query_posts` poate fi folosit. Indiferent dacă faci asta sau nu, trebuie să apelezi `wp_reset_query` după ce ai preluat datele, altfel vei întâmpina probleme. Eu de fapt fac asta și nu am avut nicio problemă până acum.
