列出使用特定模板的页面

时间:2013-09-20 作者:João Paulin

我创建了一个名为product.php 标题如下:

<?php
/*
Template Name: Product Page
*/
如何在侧栏中列出使用“产品页”模板的每个页面?

我试过阅读wp_list_pages() 函数文档,但似乎只能列出筛选条件post_type, 不按使用的模板。

2 个回复
最合适的回答,由SO网友:Milo 整理而成

您可以使用WP_Query meta_query. 页面模板文件名存储在post meta中的键下_wp_page_template:

$args = array(
    \'post_type\' => \'page\',
    \'posts_per_page\' => -1,
    \'meta_query\' => array(
        array(
            \'key\' => \'_wp_page_template\',
            \'value\' => \'product.php\'
        )
    )
);
$the_pages = new WP_Query( $args );

if( $the_pages->have_posts() ){
    while( $the_pages->have_posts() ){
        $the_pages->the_post();
        the_title();
    }
}
wp_reset_postdata();

SO网友:gmazzap

页面模板通过带有键的元字段设置\'_wp_page_template\'. 此元字段的值为php full file name 模板文件的

\'page-products.php\'

因此,您可以创建一个自定义函数,使用meta\\u key和meta\\u value param off轻松获取具有特定模板的页面get_pages (或使用WP_Query 具有\'meta_query\' 参数):

get_pages_by_template( $template = \'\', $args = array() ) {
  if ( empty($template) ) return false;
  if ( strpos($template, \'.php\') !== (strlen($template) - 4) )  $template .= \'.php\';
  $args[\'meta_key\'] = \'_wp_page_template\';
  $args[\'meta_value\'] = $template;
  return get_pages($args);
}
此函数将模板作为第一个(必需)参数接受,将模板的所有参数作为第二个(可选)参数接受get_pages.

模板可以通过\',也可以不通过\'。php扩展:

$pages = get_pages_by_template(\'page-products\');

$pages = get_pages_by_template(\'page-products.php\');
之后,您可以根据需要使用检索到的页面:循环遍历它们并输出一些标记,创建一个使用该函数的自定义小部件,等等。。。

结束

相关推荐

sort child pages on admin

我有一个层次化的CPT,其结构如下:- parent item 1 - child item 1 - child item 2 - child item 3 - child item 4 - child item 5 - parent item 2 - child item 1 - child item 2 - child item 3 - child item 4