Cum pot obține ID-ul unei pagini de arhivă?
Am o pagină WooCommerce pentru produsele mele care este tratată ca o pagină de arhivă. Am nevoie să obțin ID-ul pentru pagina de arhivă, dar evident dacă folosesc $post->ID
sau get_the_id()
, etc. primesc ID-ul celui mai recent articol de pe acea pagină.

Dacă aceasta este o pagină adevărată, atunci poți obține ID-ul acelei pagini specifice cu get_queried_object_id()
. Această funcție funcționează și va returna ID-ul pe paginile specifice, single, categorii, taxonomii, tag-uri și paginile de autor unde este utilizată. Arhivele de date și ore reale precum și pagina de start nu vor avea ID-uri
Poți face următoarele
$page_id = get_queried_object_id();
echo $page_id;
Doar o notă foarte importantă, query_posts
rupe interogarea principală ceea ce afectează funcționalitatea de mai sus. Acest lucru va duce la date incorecte. Așadar, asigură-te că nu folosești niciodată query_posts

Când folosesc asta, primesc un ID 0
în loc de 6
. Nu sunt complet sigur cum WooCommerce parcurge produsele. Totuși, știu mai bine decât să folosesc query_posts

Atunci pagina ta nu este o pagină, ci un șablon de arhivă, caz în care vei primi 0
. Dacă trebuie să folosești o pagină ca pagină de arhivă, trebuie să setezi has_archive
la false
când înregistrezi tipul de postare personalizată, altfel șablonul tău de pagină personalizată nu va fi niciodată folosit și codul meu va returna mereu 0
așa cum este de așteptat. Nu uita să resetezi rewrite-urile după modificare

ID-ul este folosit într-un plugin pe care l-am scris. Woocommerce stochează ID-ul într-o opțiune. Am cercetat mai în detaliu Woocommerce și l-am găsit în acest mod.

Chiar trebuie să știi ID-ul, pentru asta vezi răspunsul lui @PieterGoosens, sau doar ai nevoie să știi dacă te afli în arhiva tipului de postare product
? Acesta din urmă poate fi realizat ușor folosind is_post_type_archive()
:
if ( is_post_type_archive( 'product' ) ) {
// cod
}
