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
dcp3450
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
Pieter Goosen
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.
dcp3450
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
}