您如何检查您是否在可湿性粉剂管理部分的特定页面中?例如,我如何检查我是否在用户>您的个人资料页面中?

时间:2011-01-19 作者:racl101

我正在构建一个插件,我想在管理头部添加一些javascript,但只针对某些管理页面。我指的不是你自己创建的WordPress页面,而是现有的管理部分页面,如“你的个人资料”、“用户”等。是否有专门用于此任务的wp功能?我一直在找,我只能找到布尔函数is_admin 和动作挂钩,但不是只检查的布尔函数。

5 个回复
最合适的回答,由SO网友:prettyboymp 整理而成

实现这一点的方法是使用“admin\\u enqueue\\u scripts”挂钩将需要的文件排队。此挂钩将传递与当前加载页面相关的$hook\\u后缀:

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\');

SO网友:goldenapples

wp admin中有一个名为$pagenow 它保存当前页面的名称,即编辑。php,发布。php等。

您还可以检查$\\u 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

    }

SO网友:Louis-Rémi

最全面的方法是get_current_screen 在WordPress 3.1中添加

$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] => 
)

SO网友:t31os

为上述问题提供另一种方法/途径。

// 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 .. );
}
此方法更直接地针对特定页面,并避免在回调中需要条件逻辑(因为您已经在所选挂钩中进行了区分)。

SO网友:Tofandel

我觉得奇怪的是,没有人提到add\\u menu\\u 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(/*...*/);
}
如果你需要$挂钩,而你自己没有添加菜单页,那么doc是here

例如,顶级菜单页的挂钩是

load-toplevel\\u page\\u$菜单栏

子菜单页的挂钩是

加载-$MenuSlug\\u page\\u$子菜单

按照该逻辑,用户配置文件页面的挂钩是

load-users\\u page\\u配置文件

结束

相关推荐

使用Facebook API集成在WordPress上构建成员目录站点?

我想为我的一个WordPress网站建立一个成员目录,该网站将与Facebook API挂钩。网站用户可以浏览成员目录,查看他们的Facebook个人资料和信息,如电子邮件地址、电话号码、网站等。基本上,我认为会员需要从该网站登录facebook并“允许访问”然后,WordPress可以从Facebook中提取成员数据,如电子邮件地址、电话号码、网站等,并将其作为自定义元存储在WordPress中。这种方法的一个问题是,当用户更新他们的facebook个人资料时,WordPress网站将不会得到更新,直到