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