Get template name by full URL

时间:2015-10-02 作者:mahmoud sami

是否有任何方法可以通过完整URL获取模板名称例如

如果完整url为

www.example.com/hello-world
我需要一个返回模板名称的函数(page.php)

我知道WordPress将每个url与正则表达式匹配,以确定查询并决定要包含哪个模板。

这正是我所需要的,一个内置或(定制)函数,它接受URL并返回相应的模板

3 个回复
SO网友:Pieter Goosen

您可以使用全局$template 它保存用于显示页面的当前模板的完整路径。从那里,您可以操纵该值以获取模板的名称

例如$template 看起来是这样的:(这是在我的PC上的本地主机上)

E:\\xammp\\htdocs\\wordpress/wp-content/themes/pietergoosen2014/page-test.php
仅返回page-test.php 第二部分,我使用以下使用PHP函数的函数substrstrrpos 找到最后一个/ URL中的字符,然后返回其后的所有内容:

function get_current_template() {
    global $template;
    return substr( $template, strrpos( $template, \'/\' ) + 1 );
}
然后,您可以在模板中的任何位置使用它,如

echo get_current_template();
我通常只在本地主机上打印站点标题中的模板名称,如

add_action( \'wp_head\', function () 
{
    global $template;
    print substr( $template, strrpos( $template, \'/\' ) + 1 );
});

add_action( \'wp_head\', function () 
{
    global $template;
    print $template;
});

SO网友:Joel

您应该能够使用get_page_template_slug()

由于该函数需要id而不是URL,请使用url_to_postid() 首先查找ID

SO网友:nkuldip

在标题中使用以下代码。php了解当前模板:

<body id="<?php echo get_option(\'current_page_template\'); ?>">
如果这有帮助,我会很高兴的。

相关推荐