检查用户是否为admin后使用此方法。

   if ( isset($_GET['action'])  && $_GET['action'] === 'edit' )


还有更好的方法吗?

评论

通过我今天的测试,这似乎是使用当前WP条件执行此操作的最佳方法,因为在某些管理屏幕上,get_current_screen被记录为失败并出现致命错误。有关更多信息,请参阅文档codex.wordpress.org/Function_Reference/get_current_screen

但是尝试调用get_current_screen()会导致致命错误,因为未定义它。 —很好地将其包装在if(function_exists('get_current_screen'))中吗?

#1 楼

您可以使用get_current_screen来确定。

$screen = get_current_screen();
if ( $screen->parent_base == 'edit' ) {
    echo 'edit screen';
}


我不知道我是否会说这总是更好,这取决于所需的内容,但可能我会做的方式。这种方法的最大好处是您可以访问更多信息,因此ergo可以做出更多不同的区分。只需看一下文档即可理解我的意思。

它应在以后的钩子中使用,Codex说:


该函数返回null如果被调用从admin_init挂钩中
应该可以在以后的钩子中使用,例如current_screen


评论


不过,这在Posts and Pages列表中也是如此,对吗?例如mywebsite.com/wp-admin/edit.php?post_status=draft&post_type=post

–内森(Nathan)
16 Mar 25 '16 at 18:42

@Nathan True,确实如此。正如答案中所说,什么是正确的目的取决于用例。当然,这并不是所有情况下的最佳方法,但是在某些情况下,即使不是最佳方法也是一种好方法。

–尼古拉
16 Mar 26 '16 at 13:38

注意:在许多情况下,直接调用get_current_screen()会导致致命错误。确保将其包装在函数中,并从适当的钩子中调用它。

– squarecandy
17年1月13日在16:53

#2 楼

更好的方法:

全局变量$ pagenow

global $pagenow;
if (( $pagenow == 'post.php' ) || (get_post_type() == 'post')) {

    // editing a page

}
if ($pagenow == 'profile.php') {

    // editing user profile page

}


源:https://wordpress.stackexchange.com/a/7281/33667

评论


我发现除了$ _GET ['post_type']以外,它都可以工作。但是,get_post_type()代替了我。

–阿什·雅培(Ashe Abbott)
17年9月14日在16:30

$ _GET ['post_type']仅在创建新帖子时在post-new.php上设置,而不是在编辑帖子时在post.php上设置。 get_post_type()将适用于post.php,因为该帖子已经存在并且具有帖子类型,但是我不确定它将在post-new.php上使用。弗兰克(Frank)的答案更好,因为两者都适用。

–雅各布·皮蒂(Jacob Peattie)
18-4-10在7:31



#3 楼


使用“ get_current_screen”,只需事先确保它存在。
正如法典上所说:“此功能是在大多数管理页面上定义的,但不是全部。”
此操作还可以过滤掉普通的(面向读者的)视图(重新阅读该句子,重点放在管理页面上)。

很可能是您想要的下一件事弄清楚的是,如果您实际上是在页面或帖子上...

// Remove pointless post meta boxes
function FRANK_TWEAKS_current_screen() {
    // "This function is defined on most admin pages, but not all."
    if ( function_exists('get_current_screen')) {  

        $pt = get_current_screen()->post_type;
        if ( $pt != 'post' && $pt != 'page') return;

        remove_meta_box( 'authordiv',$pt ,'normal' );        // Author Metabox
        remove_meta_box( 'commentstatusdiv',$pt ,'normal' ); // Comments Status Metabox
        remove_meta_box( 'commentsdiv',$pt ,'normal' );      // Comments Metabox
        remove_meta_box( 'postcustom',$pt ,'normal' );       // Custom Fields Metabox
        remove_meta_box( 'postexcerpt',$pt ,'normal' );      // Excerpt Metabox
        remove_meta_box( 'revisionsdiv',$pt ,'normal' );     // Revisions Metabox
        remove_meta_box( 'slugdiv',$pt ,'normal' );          // Slug Metabox
        remove_meta_box( 'trackbacksdiv',$pt ,'normal' );    // Trackback Metabox
    }
}
add_action( 'current_screen', 'FRANK_TWEAKS_current_screen' );




评论


感谢您的分享,get_current_screen()是正确使用的工具,因为它提供了大量数据。

–敏捷的SEO
17年9月9日在8:13