抓取页面模板名称?

时间:2015-04-15 作者:user13286

我试图将用户名与页面模板名称进行比较。我找到了以下代码:

get_post_meta( $post->ID, \'_wp_page_template\', true );
但这并不是我想要的。这将返回页面模板的文件名,即:

templates/page-products.php 
我要查找的是此处页面模板中定义的实际模板名称:

/*
Template Name: products
*/
这可能吗?

2 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

作为@Ben Cole的替代品,它的强度较低(尤其是如果您有多个页面模板),但没有那么棒,因为它不使用WP_Theme 对象;)

function wpse_184317_get_template_name( $page_id = null ) {
    if ( ! $template = get_page_template_slug( $page_id ) )
        return;
    if ( ! $file = locate_template( $template ) )
        return;

    $data = get_file_data(
        $file,
        array(
            \'Name\' => \'Template Name\',
        )
    );

    return $data[\'Name\'];
}
在使用中:

echo wpse_184317_get_template_name(); // Template name for current page
echo wpse_184317_get_template_name( 14 ); // Template name for page ID 14

SO网友:Ben Cole

检索文件中定义的模板名称的一种方法如下:

function get_template_name () {
    // List all available template names for current theme
    $available_templates = wp_get_theme()->get_page_templates();

    // Get filename of page template we are on
    $template_filename = basename(get_page_template())

    // Return the template name for the currently active file
    return $available_templates[$template_filename];
}
上述函数将返回用于模板名称的任何文本。在下面的示例中,它将返回“NAME OF TEMPLATE“:

/*
Template Name: NAME OF TEMPLATE
*/
有关WP_Theme 对象

结束

相关推荐