我正在尝试检索信息中心中“编辑页面”页面上使用的模板的文件名/路径。
类似于wp-includes/template-loader.php
(source)在前端的作用:找出要呈现的模板。
不幸的是,像is_front_page()
这样的表达式 - Wordpress' template-loader.php
用于查明是否应使用get_front_page_template()
- 在管理页面上无法正常使用。这是预期的,因为这些表达式使用全局$ wp_query对象,而不是当前查询。
到目前为止我已尝试过:
在管理页面内运行帖子循环
$args = array(
'p' => get_the_ID(),
'post_type' => 'any'
);
$query = new \WP_Query($args);
if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
<?= the_title(); ?><br>
Is front page: <?= is_front_page() ? 'true' : 'false' ?>
<?php endwhile; endif; ?>
显示器:
主页
是首页:假
使用get_post_meta
<?= get_post_meta(get_the_ID(), '_wp_page_template', true); ?>
显示器:
默认
...对于Home上的front-page.php和另一个默认页面上的page.php将是相同的,所以这对我没有帮助。
简而言之
当我正在编辑我的主页&#39;时,我想要得到的是front-page.php
。页。或者custom-template.php
当我选择自定义模板编辑某个页面时。或者about-page.php
当我正在编辑一个名为&#39;关于&#39;的页面时。如何获取正确的文件名或路径?
答案 0 :(得分:3)
如果您的具体问题与主页有关,则可以使用get_page_template()
的组合,并将已编辑的网页ID与get_option('page_on_front')
进行比较(请参阅WordPress option reference)。还有一个选项show_on_front
,用于指示首页是显示帖子还是静态页面。
也许这会有帮助吗?我不知道是否还有其他边缘情况会使用不同的模板......
答案 1 :(得分:2)
<?php echo realpath(get_page_template()); ?>
输出类似/foo/bar/baz/wp-content/themes/your-theme/{page-template}.php
您可以选择不使用realpath()
,只需获取模板名称。
答案 2 :(得分:0)
我发现的唯一解决方案是:
Class<T!>
我知道它很丑陋,但我只是找不到不使用此全局变量的方法。