¿Cómo puedo obtener el ID de una página de archivo?
Tengo una página de WooCommerce para mis productos que es tratada como una página de archivo. Necesito obtener el ID de la página de archivo pero obviamente si uso $post->ID
o get_the_id()
, etc. obtengo el ID del post más reciente en esa página.

Si esta es una página verdadera, entonces puedes obtener el ID de esa página específica con get_queried_object_id()
. Esto funciona y devolverá el ID en las páginas específicas, entradas únicas, categorías, taxonomías, etiquetas y páginas de autor donde se utilice. Los archivos de fecha y hora verdaderos y la página de inicio no tendrán ID.
Puedes hacer lo siguiente:
$page_id = get_queried_object_id();
echo $page_id;
Solo una nota muy importante, query_posts
rompe la consulta principal, lo que interrumpe la funcionalidad anterior. Esto llevará a datos incorrectos. Así que asegúrate de nunca usar query_posts
.

Cuando uso eso obtengo un ID de 0
cuando debería ser 6
. No estoy completamente seguro de cómo woocommerce recorre los productos. Sin embargo, sé mejor que usar query_posts

Entonces tu página no es una página sino una plantilla de archivo en cuyo caso obtendrás 0
. Si necesitas usar una página como página de archivo, debes establecer has_archive
en false
al registrar el tipo de post personalizado, de lo contrario tu plantilla de página personalizada nunca se usará y mi código siempre devolverá 0
como se espera. Solo recuerda limpiar las reescrituras después del cambio

El ID se utiliza en un plugin que escribí. Woocommerce almacena el ID en una opción. Investigué más a fondo en Woocommerce y lo encontré de esa manera.

¿Realmente necesitas saber el ID, para eso mira la respuesta de @PieterGoosens, o solo necesitas saber si estás en el archivo del tipo de entrada product
? Esto último se puede lograr fácilmente usando is_post_type_archive()
:
if ( is_post_type_archive( 'product' ) ) {
// código
}
