我不完全明白你的意思,但每当设置页面模板时,WordPress也会用特定的键和值设置postemta。调用键_wp_page_template
该值保存模板相对于主题的位置。所以你可以这样做:
$pages_with_templates = new WP_Query( array(
\'post_type\' => \'page\',
\'posts_per_page\' => 20,
\'meta_key\' => \'_wp_page_template\',
) );
这将返回一个包含模板的页面列表,您可以通过提供以下值进一步缩小其范围:
$pages_with_this_template = new WP_Query( array(
\'post_type\' => \'page\',
\'posts_per_page\' => 20,
\'meta_key\' => \'_wp_page_template\',
\'meta_value\' => \'template-fullwidth.php\',
) );
现在,当我说相对于主题时,我的意思是如果您使用子目录,例如:
theme-name/page-templates/template-fullwidth.php
postmeta值将保持:
pages-templates/template-fullwidth.php
.
还有一个条件可以测试当前页面是否使用特定模板:
if( is_page_template( \'template-fullwidth.php\' ) ) { ... }
最后,如果您使用
body_class()
功能-WordPress将根据模板为body标签指定一个特定的类,如果您愿意,可以将其作为目标。