Páginas de consulta de WordPress con cierta plantilla

2 minutos de lectura

¿Hay alguna forma de consultar las páginas de WordPress que tienen cierta plantilla? Esto es lo que tengo, pero no muestra nada:

<?php $my_query = new WP_Query(array( 'meta_key' => '_wp_page_template', 'meta_value' => 'template-city.php' )); ?>
                <?php while ($my_query->have_posts()) : $my_query->the_post(); ?>
                    <li>
                    <?php the_title(); ?>
                    </li>
                <?php endwhile; ?>

Por supuesto, hay un archivo de plantilla de página llamado template-city.php

  • Um, ¿cómo funcionaría esto? ¿Qué estás intentando lograr?

    – SMacFadyen

    23 de agosto de 2012 a las 8:20

  • Hay muchas páginas en el sitio web: continentes, con ciudades para niños, que además tienen alojamiento para niños, o restaurantes para niños, etc. Cada una de estas páginas tiene su propia plantilla de página, por lo que me gustaría mostrar todas las ciudades con la consulta. ¿Espero que esto ayude?

    – jOpacic

    23 de agosto de 2012 a las 8:24

  • Parece que necesitas wp_list_pages(), codex.wordpress.org/Function_Reference/wp_list_pages

    – SMacFadyen

    23 de agosto de 2012 a las 8:33

  • Sí, pero ¿qué pasa si quiero usar la miniatura de las páginas? No quiero mostrar solo los nombres de las ciudades en una lista, me gustaría tener acceso a todas las cosas en una página, como la miniatura, por ejemplo.

    – jOpacic

    23 de agosto de 2012 a las 11:10

avatar de usuario
enero

si post_type se deja fuera, WP buscará la publicación y usted está buscando páginas.

<?php
    $args = array(
        'post_type' => 'page',//it is a Page right?
        'post_status' => 'publish',
        'meta_query' => array(
            array(
                'key' => '_wp_page_template',
                'value' => 'template-city.php', // template name as stored in the dB
            )
        )
    );
$my_query = new WP_Query($args)
?>

  • Solo un punto de recordatorio para las personas que ven esto: sí, es necesario tener meta_keyEl valor de ser una matriz dentro de una matriz para que esto funcione.

    – Muhammad Abdul Rahim

    21/10/2015 a las 21:51

  • En caso de que esto no funcione para usted, asegúrese de que el value la ruta es correcta, específicamente si su archivo de plantilla está en una carpeta. en mi caso el value necesitaba ser page-templates/template-name.php

    – mmshr

    10 de abril de 2019 a las 15:04

  • ¿Se pueden pasar varios nombres de plantilla a la consulta?

    – Sombra

    12 sep 2019 a las 18:06

  • @Shadoath sí puedes: 'meta_query' => array(array('key' => '_wp_page_template','value' => ['template-city.php', 'template-other.php'], 'compare' => 'IN')) ver el documentación oficial para más información

    – enero

    16 de septiembre de 2019 a las 8:52

  • Simplemente no olvide agregar ‘posts_per_page’ => -1 , o obtendrá solo 10 resultados

    – Tomo Miha

    12 dic 2019 a las 15:20

¿Ha sido útil esta solución?