Get_Current_Screen和WP_Screen类

时间:2012-04-22 作者:Brian Thornton

所以我想知道如何正确使用get\\u current\\u屏幕。为了学习,我只是在弹出一个特定页面的警报。我已经看过了http://www.deluxeblogtips.com/2012/01/get-admin-screen-information.html 以及WP\\u屏幕上的codex和get\\u current\\u屏幕(点击我的最大链接,因为我的代表还不到10岁)

我以为我做得对。。。但没有让它发挥作用。我所希望的是,当我转到/wp admin/post new时。php?post\\u type=我能做的事情的产品(将在脚本中排队)。几乎是直接复制并更改了帖子类型。。。但是,我错过了什么?

add_action( \'wp_enqueue_scripts\', \'rw_enqueue_scripts\' );
/**
* Enqueue scripts for \'post\' page of \'product\' post type only
*
* @return void
*/

function rw_enqueue_scripts()

{

$screen = get_current_screen();

// Check screen base and current post type
if ( \'post\' === $screen->base && \'product\' === $screen->post_type )
{
    echo "<script type=\'text/javascript\'>alert(\'worked\');</script>

    ";
}
}
Thanx提前,

布莱恩

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

wp_enqueue_scripts 仅在前端启动,而不在管理屏幕上启动。要在管理端加载脚本,需要使用钩子admin_enqueue_scripts.

作为可选参数传递的是页面挂钩。(示例包括edit.php, 对于管理编辑页面(列出页面/帖子/cpt帖子),post.php 编辑帖子/自定义帖子类型时post-new.php 创建新的时)。

$screen = get_current_screen(); 也可用于您,因此您可以按帖子类型进行限制。E、 g.:

add_action( \'admin_enqueue_scripts\', \'rw_enqueue_scripts\' ,10,1);

function rw_enqueue_scripts($hook){

    $screen = get_current_screen();

    // Check screen hook and current post type
    if ( \'post.php\' == $hook && \'product\' == $screen->post_type ){
        //Load scripts
    }
}

SO网友:Said Erraoudy

我使用此代码使产品页面上的一个字段成为必需字段。但它包含在将脚本插入标题之前检查当前页面是否为产品页面的条件。

add_action( \'admin_head\', \'dcwd_require_weight_field\' );
function dcwd_require_weight_field() {
    $screen         = get_current_screen();
    $screen_id      = $screen ? $screen->id : \'\'; 
    if ( $screen_id == \'product\' ) {
?>
<script>
  //Load scripts
</script>
<?php
    }
}

结束