¿Obtener página por plantilla?

4

Estoy en una situación complicada. Intentaré explicarlo lo más fácil posible.

Imagina las siguientes páginas:

  • Página 1
  • página 2
    • Subpágina 1
    • Subpágina 2
    • Subpágina 3

Cada subpágina de la página 2 enumera publicaciones de un tipo de publicación personalizada con una taxonomía específica. Llamemos al tipo de publicación Objetos, y a la taxonomía solo Categorías, para que sea sencillo.

Para enumerar las diferentes publicaciones de las diferentes categorías, tengo tres plantillas de página diferentes para las subpáginas: subpage-1-templ.php , subpage-2-templ.php y subpage-3-templ.php . Cada una de estas plantillas enumera las publicaciones de una Categoría específica para el tipo de publicación (Objetos). Está codificado.

Hasta ahora todo bien, funciona como se esperaba. Es un poco feo tener que codificarlo, pero no sé de otra manera, así que esto tendrá que funcionar por ahora. (Preferiría deshacerme de WordPress en conjunto, pero esa es otra historia)

Todas esas subpáginas enumera a los hermanos en un submenú. Entonces, si estás en la subpágina 2, se mostrará la subpágina1, 2 y 3 (pero la subpágina 2 tiene una clase actual). Funciona bien.

Ahora al problema real; al hacer clic en una de las publicaciones enumeradas en una subpágina, se accede a una página que muestra más información de la publicación, como se esperaba. El problema es que quiero mostrar el submenú para la página 2 allí (así, subpágina1, 2 y 3). No sé cómo hacerlo sin codificarlo.

Quizás, y no sé si esto funcionará, pero tal vez pueda encontrar una página por su plantilla. Puedo crear una plantilla para la página 2 (no para sus hijos, la página principal real) llamada objects-template.php y luego en una publicación, puedo tomar la página que usa la plantilla, luego obtener todo lo que es secundario, y luego simplemente listar hacia arriba. Simplemente no sé cómo obtener una página por su plantilla, si eso es posible (Preferiblemente por el nombre del archivo de la plantilla, pero el nombre de la plantilla también funciona).

¿Alguna sugerencia?

Editar

    // Query looks fine right?
    $query = new WP_Query(array(
        'meta_key' => '_wp_page_template',
        'meta_value' => 'objects-parent-page-template.php'
    ));
    // Dump the id (also tried just getting the object with get_queried_object(), still get null)
    echo '<pre>'; var_dump($query->get_queried_object_id()); die();
    
pregunta qwerty 29.10.2012 - 12:49

1 respuesta

5

El nombre de archivo de la plantilla de la página se almacena como un meta meta con la clave '_wp_page_template', así que básicamente puedes usar get_post_meta($post_id, '_wp_page_template', true); para obtener el nombre de archivo de la plantilla con la ID $post_id .

También puede hacer lo contrario (es decir, obtener el ID desde el nombre de archivo de la plantilla de página) utilizando Parámetros de campo personalizados en WP_Query u otras funciones de wordpress.

También hay una función condicional is_page_template que verifica si la plantilla de la página actual es la especificada en el parámetro

Esto probablemente solucionará tu problema & tal vez ayude a deshacerse de las cosas codificadas.

    
respondido por el Mridul Aggarwal 29.10.2012 - 13:04

Lea otras preguntas en las etiquetas