Come posso ottenere l'ID di una pagina archivio?

20 lug 2015, 08:27:43
Visualizzazioni: 29.2K
Voti: 3

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.

1
Commenti

Se qualunque risposta ti è stata utile, considera di accettarla. Vedi »Cosa dovrei fare quando qualcuno risponde alla mia domanda?« e/o »Perché è importante votare?«, ulteriori informazioni sul modello [wordpress.se] sono disponibili nella [guida].

Nicolai Grossherr Nicolai Grossherr
9 nov 2015 14:11:03
Tutte le risposte alla domanda 2
6

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

20 lug 2015 08:46:12
Commenti

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

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

Ho dovuto usare un get_option fornito da woocommerce

dcp3450 dcp3450
20 lug 2015 09:49:03

Cosa significa esattamente?

Pieter Goosen Pieter Goosen
20 lug 2015 09:54:36

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

Felice che tu abbia risolto il problema. Beh, puoi pubblicarlo come risposta e accettarlo come quella corretta. ;-)

Pieter Goosen Pieter Goosen
20 lug 2015 21:55:00
Mostra i restanti 1 commenti
1

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
}
20 lug 2015 10:32:08
Commenti

Utilizzo l'ID della pagina per recuperare un'impostazione salvata tramite un metabox personalizzato. Ho scoperto che WooCommerce memorizza quel valore come opzione.

dcp3450 dcp3450
20 lug 2015 21:51:57