Consulta de plantilla de página con WP_Query


14

Me gustaría consultar solo páginas con una determinada plantilla de página WP_Queryo una función que devolvería el objeto de publicación, pero no puedo encontrar ninguna información al respecto en el códice oficial.

Respuestas:


23

Pruebe esto ... Suponiendo que el nombre de la plantilla es 'my_template.php',

$query = new WP_Query(
    array(
        'post_type' => 'page',
        'meta_key' => '_wp_page_template',
        'meta_value' => 'my_template.php'
    )
);
//Down goes the loop...

También puede usar get_posts o modificar publicaciones de consultas para realizar el trabajo. Ambas funciones usan los mismos parámetros que WP_Query .


20

Incorrecto: a partir de wordpress 3 necesitas algo parecido a:

$args = array(
    'post_type'  => 'page', 
    'meta_query' => array( 
        array(
            'key'   => '_wp_page_template', 
            'value' => 'my_template.php'
        )
    )
);

¡¡GRACIAS!! Hojeé esta página demasiado rápido, usé la respuesta aceptada. Esto lo hace. Para cualquier otra persona, tenga en cuenta la matriz dentro de la matriz dentro de la matriz ...
Jeremy Carlson

3
La única diferencia aquí es la post_type. De lo contrario, no necesita la meta_querymatriz para un solo par clave / valor personalizado.
Rutwick Gangurde

Por supuesto, se necesita la meta consulta. Excepto que podría ser "en línea" con meta_keyy meta_valueo con una matriz simple, que podría incluir varias condiciones.
Maxime Culea


0

Si el intento de alguien resulta incorrectamente en cero publicaciones, probablemente el nombre de la plantilla sea incorrecto. Probé el nombre del archivo php y el nombre de mi plantilla y no funcionaron. Luego decidí inspeccionar el cuadro de selección de plantillas donde seleccionamos la plantilla en el editor de páginas. Encontré esto:

<option value="templates-map/component-tutorial-1.php" 
 selected="selected">Tutorial -1</option>

Solía templates-map/component-tutorial-1.phpy funcionó.


0

Si tiene la plantilla dentro de otra carpeta:

$args = array(
    'post_type' => 'page', //it is a Page right?
    'post_status' => 'publish',   
    'meta_query' => array(
        array(
            'key' => '_wp_page_template',
            'value' => 'page-templates/template-name.php', // folder + template name as stored in the dB
        )
    )
);
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.