参数
- $post
-
(int|WP_Post) (可选) 文章 ID或WP_Post对象,默认为全局$post。
默认值: null
返回
(string|false) 页面模板文件名,使用默认页面模板时返回空字符串。如果文章不存在,则返回false。
说明
页面分配的自定义模板的文件名存储为自定义字段的值,字段名(键名)为'_wp_page_template'(在wp_postmeta数据库表中)。如果模板存储在主题的子目录(或父主题的子主题的子目录)中,wp_postmeta的值是文件夹名和文件名,例如:
my-templates/my-custom-template.php
当'_wp_page_template'的值为空或'default'时,函数get_page_template_slug()返回空字符串。
以下划线开头的自定义字段不会显示在编辑界面的“自定义字段”模块中。要检索页面的自定义模板元数据,还可以使用:
get_post_meta( $post->ID, '_wp_page_template', true )
源码
更新日志
版本 | 描述 |
---|---|
4.7.0 | 现在适用于任何文章类型,而不仅仅是页面 |
3.4.0 | 开始引入 |
使用示例
显示当前页面的页面模板文件名:
<?php echo esc_html( get_page_template_slug( $post->ID ) ); ?>
如果您需要反向工程来查找在特定页面模板文件名下工作的所有页面,这是一个可能适合您的解决方案。
function wpdocs_get_pages_by_template_filename( $page_template_filename ) { return get_pages( array( 'meta_key' => '_wp_page_template', 'meta_value' => $page_template_filename ) ); }
您可以使用此函数,例如:
$pages = wpdocs_get_pages_by_template_filename( 'templates/offers.php' );
它将返回(array|false)由该页面模板文件名匹配的页面列表。
通常,在您构建的主题中,您需要找到在特殊自定义模板下工作的特定页面,并且您需要动态访问其ID、内容、标题等,此函数将对此有所帮助。