Care este diferența dintre $paged și $page în WordPress?

11 mar. 2015, 04:50:29
Vizualizări: 16.4K
Voturi: 9

Î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=');
?>
0
Toate răspunsurile la întrebare 1
4
12

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ă este 0, 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.

11 mar. 2015 06:38:17
Comentarii

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

Hung PD Hung PD
12 mar. 2015 04:04:31

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

Pieter Goosen Pieter Goosen
12 mar. 2015 05:27:57

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/

Philipp Philipp
13 aug. 2019 12:18:48

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.

Alexander Behling Alexander Behling
28 iun. 2021 13:07:27