Come posso ottenere l'ID di una pagina archivio?
Ho una pagina WooCommerce per i miei prodotti che viene trattata come una pagina archivio. Ho bisogno di ottenere l'ID della pagina archivio ma ovviamente se uso $post->ID
o get_the_id()
, ecc. ottengo l'ID del post più recente presente in quella pagina.

Se questa è una pagina vera, allora puoi ottenere l'ID di quella pagina specifica con get_queried_object_id()
. Questo funziona e restituirà l'ID sulle pagine specifiche, singole, di categoria, tassonomia, tag e pagine degli autori dove viene utilizzato. Gli archivi veri di data e ora e la homepage non avranno ID
Puoi fare quanto segue
$page_id = get_queried_object_id();
echo $page_id;
Solo una nota molto importante, query_posts
interrompe la query principale compromettendo la funzionalità sopra descritta. Questo porterà a dati non corretti. Quindi assicurati di non usare mai query_posts

Quando lo uso ottengo un ID di 0
quando dovrebbe essere 6
. Non sono completamente sicuro di come woocommerce cicla attraverso i prodotti. Tuttavia, so bene che non devo usare query_posts

Allora la tua pagina non è una pagina ma un template di archivio, nel qual caso otterrai 0
. Se hai bisogno di usare una pagina come pagina di archivio, devi impostare has_archive
a false
quando registri il custom post type, altrimenti il tuo template di pagina personalizzato non verrà mai usato e il mio codice restituirà sempre 0
come previsto. Ricorda solo di svuotare le rewrite dopo il cambiamento

L'ID viene utilizzato in un plugin che ho scritto. Woocommerce memorizza l'ID in un'opzione. Ho approfondito in Woocommerce e l'ho trovato in quel modo.

Hai davvero bisogno di conoscere l'ID? Per quello, vedi la risposta di @PieterGoosens. Oppure hai solo bisogno di sapere se ti trovi nell'archivio del post type product
? Quest'ultimo caso può essere facilmente verificato utilizzando is_post_type_archive()
:
if ( is_post_type_archive( 'product' ) ) {
// codice
}
