我正在尝试检索仪表板中“编辑页面”页面上使用的模板的文件名/路径。
类似于 wp-includes/template-loader.php
( source ) 在前端所做的事情:找出要呈现的模板。
不幸的是,像 is_front_page()
这样的表达式 - Wordpress 的 template-loader.php
用来确定它是否应该使用 get_front_page_template()
- 在管理页面上无法正常工作。这是意料之中的,因为这些表达式使用全局 $wp_query 对象,而不是当前查询。
到目前为止我尝试了什么:
在管理页面内运行一个 post 循环
$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; ?>
显示:
Home
Is front page: false
使用 get_post_meta
<?= get_post_meta(get_the_ID(), '_wp_page_template', true); ?>
显示:
default
...这对于主页上的 front-page.php 和另一个默认页面上的 page.php 是相同的,所以这对我没有帮助。
简而言之
当我编辑“主页”页面时,我想要获取的是 front-page.php
。或 custom-template.php
当我使用选定的自定义模板编辑某些页面时。或 about-page.php
当我编辑名为“关于”的页面时。如何获取正确的文件名或路径?
最佳答案
如果您的具体问题出在主页上,您可以结合使用 get_page_template()
并将已编辑页面的 ID 与 get_option('page_on_front')
进行比较(见 WordPress option reference )。还有一个选项,show_on_front
,它指示首页是显示帖子还是静态页面。
也许这有帮助?我不知道是否还有其他边缘情况会使用不同的模板...
关于php - 从管理页面找出用于页面的 Wordpress 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45965531/