检查用户是否为admin后使用此方法。
if ( isset($_GET['action']) && $_GET['action'] === 'edit' )
还有更好的方法吗?
#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
评论
通过我今天的测试,这似乎是使用当前WP条件执行此操作的最佳方法,因为在某些管理屏幕上,get_current_screen被记录为失败并出现致命错误。有关更多信息,请参阅文档codex.wordpress.org/Function_Reference/get_current_screen但是尝试调用get_current_screen()会导致致命错误,因为未定义它。 —很好地将其包装在if(function_exists('get_current_screen'))中吗?