Запрос страниц в WordPress по имени шаблона
У меня есть шаблон с именем " Foo "в" foo.php", я хотел бы иметь возможность выбрать все страницы, которые используют этот шаблон. Я искал уже некоторое время, но не смог найти успешного способа сделать это... Может ли кто-нибудь просветить меня о правильном/единственном способе сделать это?
3 ответа:
Вы можете получить это, используя следующий код
$query = new WP_Query( array( 'meta_key' => '_wp_page_template', 'meta_value' => 'foo.php' ) ); if ( have_posts() ) while ( have_posts() ) : the_post(); <?php the_title(); ?> <?php endwhile; // end of the loop. ?>
Это тоже работает
$pages = get_pages( array( 'meta_key' => '_wp_page_template', 'meta_value' => 'template.php' ) ); foreach($pages as $page){ echo $page->post_title.'<br />'; }
Http://jorgepedret.com/old/web-development/get-pages-by-template-name-in-wordpress/
Ответ робота хорош, но я подумал, что должен прояснить несколько вещей.
Во-первых, вы должны использовать переменную для запроса, который вы создали, так что это будет $query - >have_posts() и т. д.
Во-вторых, вы должны указать post_type. Я использовал любой, так что он будет тянуть любые типы записей, кроме ревизий.
Наконец, если это находится на странице с любыми другими циклами WP, вы можете использовать wp_reset_query. Я добавил один ниже и один выше на всякий случай, но вам это действительно нужно, только если у вас есть другой петля сверху или снизу. Удалите его, если вы этого не сделаете.
Вот код:
wp_reset_query(); $query = new WP_Query( array( 'post_type' => 'any', 'meta_key' => '_wp_page_template', 'meta_value' => 'foo.php' ) ); if ( $query->have_posts() ) { while ( $query->have_posts() ) : $query->the_post(); // WP loop the_title(); endwhile; // end of the loop. } else { // in case there are no pages with this template echo 'No Pages with this template'; } wp_reset_query();
Надеюсь, что это кому-то поможет!! Счастливого кодирования!