我创建了一个名为product.php
标题如下:
<?php
/*
Template Name: Product Page
*/
如何在侧栏中列出使用“产品页”模板的每个页面?我试过阅读wp_list_pages()
函数文档,但似乎只能列出筛选条件post_type
, 不按使用的模板。
我创建了一个名为product.php
标题如下:
<?php
/*
Template Name: Product Page
*/
如何在侧栏中列出使用“产品页”模板的每个页面?我试过阅读wp_list_pages()
函数文档,但似乎只能列出筛选条件post_type
, 不按使用的模板。
您可以使用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();
页面模板通过带有键的元字段设置\'_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\');
之后,您可以根据需要使用检索到的页面:循环遍历它们并输出一些标记,创建一个使用该函数的自定义小部件,等等。。。我有一个层次化的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