Cum pot obține ID-ul unei pagini de arhivă?

20 iul. 2015, 08:27:43
Vizualizări: 29.2K
Voturi: 3

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ă.

1
Comentarii

Dacă orice răspuns ți-a fost de ajutor, atunci consideră să îl accepți. Vezi »Ce ar trebui să fac când cineva răspunde la întrebarea mea?« și/sau »De ce este importantă votarea?«, mai multe informații despre modelul [wordpress.se] sunt disponibile la [ajutor].

Nicolai Grossherr Nicolai Grossherr
9 nov. 2015 14:11:03
Toate răspunsurile la întrebare 2
6

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

20 iul. 2015 08:46:12
Comentarii

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 dcp3450
20 iul. 2015 09:41:25

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 Pieter Goosen
20 iul. 2015 09:46:46

A trebuit să folosesc un get_option oferit de WooCommerce

dcp3450 dcp3450
20 iul. 2015 09:49:03

Ce anume înseamnă asta?

Pieter Goosen Pieter Goosen
20 iul. 2015 09:54:36

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 dcp3450
20 iul. 2015 21:50:52

Mă bucur că ai rezolvat problema. Ei bine, poți posta asta ca răspuns și să-l accepti ca fiind corect. ;-)

Pieter Goosen Pieter Goosen
20 iul. 2015 21:55:00
Arată celelalte 1 comentarii
1

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
}
20 iul. 2015 10:32:08
Comentarii

Folosesc ID-ul paginii pentru a prelua o setare salvată printr-o metabox personalizată. Am descoperit că WooCommerce stochează acea valoare ca o opțiune.

dcp3450 dcp3450
20 iul. 2015 21:51:57