钩子获取管理页面编辑屏幕上正在使用的页面模板?

时间:2016-02-05 作者:Andrew Welch

我想知道正在使用哪个页面模板,因为我只想在页面使用某个模板时将一些javascript排队。这可能吗?

3 个回复
SO网友:Pieter Goosen

我不确定这是用于前端还是后端,所以我将同时处理这两个问题。

后端可以利用get_current_screen() 或者$pagenow 全球的这里有两个示例,您可以将其添加到插件或functions.php 查看管理页面上的相关信息

add_action( \'current_screen\', function ( $current_screen )
{
    ?><pre><?php var_dump($current_screen); ?></pre><?php   

});
以及

add_action( \'admin_head\', function ()
{
    global $pagenow;

    ?><pre><?php var_dump($pagenow); ?></pre><?php  

});
获得特定管理页面的名称后,可以执行以下操作

add_action( \'admin_enqueue_scripts\', function ( $hook ) 
{
    if ( \'some-page.php\' === $hook ) {
        // Add your scripts
    }
});
正如birgire指出的那样,如果您需要了解前端的这一点,只需使用is_page_template( \'some-template.php\' )

add_action( \'wp_enqueue_scripts\', function ()
{
    if ( is_page_template( \'some-template.php\' ) ) {
        // Enqueue your script
    }
});

SO网友:Andrew Welch

我最终做到了:

    global $post;

    if ( isset( $post ) ) {
        $pagetemplate = get_post_meta( $post->ID, \'_wp_page_template\', true );
        if ( !empty( $pagetemplate ) ) {
        if ( $pagetemplate == \'page-landing_child.php\' ) {

           //do something
            }
        }

    }

SO网友:admcfajn

我一直在摸索这一点,但后来我记得我们可以通过wp admin中的get参数访问post id

add_action(\'admin_head\', \'my_admin_head\');
function my_admin_head() {
    if ( ! empty( $_GET[\'post\'] ) ) {
        $post_id = sanitize_key( $_GET[\'post\'] );
        $template_name = get_post_meta( $post_id, \'_wp_page_template\', true );
        echo $template_name; exit;
    }
}

相关推荐

Updating modified templates

我想调整一些。php模板文件在我的WordPress主题中,我知道正确的过程是将相关文件复制到子主题文件夹中并在那里编辑文件,这样我的修改就不会在将来的主题更新中丢失。但这是否意味着我将无法从主题更新中获益,因为我将文件放在了我的子主题文件夹中?这可能不是一件好事,因为主题更新可能添加了一些有用的特性,甚至修复了我最初需要对代码进行调整的问题!这方面的常见解决方案是什么?有人推荐了一款Diff应用程序——这是人们常用的吗?