is_admin
和动作钩子,但找不到只能检查的布尔函数。#1 楼
这样做的方法是使用'admin_enqueue_scripts'挂钩对所需文件进行排队。该挂钩将通过与当前加载页面相关的$ hook_suffix:function my_admin_enqueue($hook_suffix) {
if($hook_suffix == 'appearance_page_theme-options') {
wp_enqueue_script('my-theme-settings', get_template_directory_uri() . '/js/theme-settings.js', array('jquery'));
wp_enqueue_style('my-theme-settings', get_template_directory_uri() . '/styles/theme-settings.css');
?>
<script type="text/javascript">
//<![CDATA[
var template_directory = '<?php echo get_template_directory_uri() ?>';
//]]>
</script>
<?php
}
}
add_action('admin_enqueue_scripts', 'my_admin_enqueue');
#2 楼
在wp-admin中有一个名为$ pagenow的全局变量,用于保存当前页面的名称,即edit.php,post.php等。您还可以检查$ _GET请求以缩小您的页面范围。位置进一步向下,例如:
global $pagenow;
if (( $pagenow == 'post.php' ) && ($_GET['post_type'] == 'page')) {
// editing a page
}
if ($pagenow == 'users.php') {
// user listing page
}
if ($pagenow == 'profile.php') {
// editing user profile page
}
评论
全球$ pagenow; if(('admin.php'=== $ pagenow)&&('prefix-theme-settings'=== $ _GET ['page'])){逻辑。}例如,检查您是否使用自定义主题设置页面admin.php?page = prefix-theme-settings。
–lowtechsun
18年2月14日在21:01
#3 楼
最全面的方法是在WordPress 3.1中添加的get_current_screen
$screen = get_current_screen();
返回
WP_Screen Object (
[action] =>
[base] => post
[id] => post
[is_network] =>
[is_user] =>
[parent_base] => edit
[parent_file] => edit.php
[post_type] => post
[taxonomy] =>
)
评论
“使用限制-此功能是在大多数管理页面上定义的,但不是全部。在某些情况下,is_admin()将返回true,但是尝试调用get_current_screen()将导致致命错误,因为未定义它。已知的示例是wp-admin / customize.php。如果从admin_init挂钩调用此函数,则该函数返回null。应该在以后的挂钩中使用它,例如current_screen。“-Codex。
–那个巴西佬
18年1月26日在16:17
@ThatBrazilianGuy快速检查表明情况已不再如此,据我所知,在所有管理页面上都可以安全使用get_current_screen()。
–史蒂文
19年1月27日在8:31
@shahar仍然是这种情况,根据上面链接的文档和我的经验。
– fabrik
19 Mar 14 '19在8:37
#4 楼
为上述问题提供替代方法/方法。// When you are viewing the users list or your editing another user's profile
add_action( 'admin_print_scripts-users.php', 'your_enqueue_callback' );
// When you are editing your own profile
add_action( 'admin_print_scripts-profile.php', 'your_enqueue_callback' );
function your_enqueue_callback() {
wp_enqueue_script( .. YOUR ENQUEUE ARGS .. );
}
此方法更直接地针对特定页面,并且避免了回调内部需要条件逻辑(因为您已经在选定的挂钩中做出了区分)。 />
评论
希望我知道为什么这个答案得不到更多票,涵盖了问题中的确切用例,并以最少的代码提供了解决方案。反馈会很好。
– t31os
2014年1月28日14:56
#5 楼
我觉得很奇怪,没有人提到过add_menu_page函数返回一个动作钩子,您只能用它在这些页面上执行某些动作的事实$hook = add_menu_page($menu_title, $page_title, $capability, $slug, $function, $icon_url, $position);
add_action( 'load-' . $hook, 'my_admin_enqueue_scripts' );
function my_admin_enqueue_scripts() {
wp_enqueue_script(/*...*/);
wp_enqueue_style(/*...*/);
}
需要$ hook,而您自己没有添加菜单页面,文档在这里例如顶层菜单页面的钩子是
-toplevel_page_ $ MenuSlug
子菜单页面的挂钩是
load- $ MenuSlug_page_ $ SubMenuSlug
遵循该逻辑,用户个人资料页面的挂钩为
load-users_page_profile
评论
温柔地提醒您答案尚未被接受。如果没有提供的答案,则不能充分回答您的问题,或者您在努力理解所提供的信息,请发表评论以告知我们。