¿Cómo puedo obtener el ID de una página de archivo?

20 jul 2015, 08:27:43
Vistas: 29.2K
Votos: 3

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.

1
Comentarios

Si cualquier parte de la respuesta te fue útil, considera aceptarla. Consulta »Qué debo hacer cuando alguien responde mi pregunta?« y/o »Por qué es importante votar?«, más información sobre el modelo de [wordpress.se] está disponible en la [ayuda].

Nicolai Grossherr Nicolai Grossherr
9 nov 2015 14:11:03
Todas las respuestas a la pregunta 2
6

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.

20 jul 2015 08:46:12
Comentarios

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

dcp3450 dcp3450
20 jul 2015 09:41:25

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

Pieter Goosen Pieter Goosen
20 jul 2015 09:46:46

Tuve que usar un get_option proporcionado por woocommerce

dcp3450 dcp3450
20 jul 2015 09:49:03

¿Qué significa exactamente?

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

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.

dcp3450 dcp3450
20 jul 2015 21:50:52

Me alegra que hayas resuelto el problema. Bueno, puedes publicar eso como una respuesta y aceptarla como la correcta. ;-)

Pieter Goosen Pieter Goosen
20 jul 2015 21:55:00
Mostrar los 1 comentarios restantes
1

¿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
}
20 jul 2015 10:32:08
Comentarios

Utilizo el ID de la página para obtener una configuración guardada mediante un metabox personalizado. Descubrí que WooCommerce almacena ese valor como una opción.

dcp3450 dcp3450
20 jul 2015 21:51:57