如何使enQueue_SCRIPT与登录的用户一起工作?

时间:2017-05-19 作者:Vladimir Despotovic

我在pugin定义文件中定义了wp\\u enqueue\\u脚本,当我以管理员身份登录时,我可以看到我的脚本被触发,但不是以普通用户身份。为什么会这样?我如何为所有登录的用户启用脚本,而不仅仅是管理员?我在插件文件中执行了以下操作:

function enqueue_team_management_scripts() {
    wp_enqueue_script("team-scripts", plugin_dir_url(__FILE__) . "js/team-scripts.js");

}

add_action("wp_enqueue_scripts", "enqueue_team_management_scripts");
在我的模板页面上:

<button id="create_team" onclick="createTeam();" >CREATE TEAM</button>
当我单击按钮时,什么也没有发生(错误显示在firebug中)>

2 个回复
SO网友:codepixelstudio

此外,除了您的wp_enqueue_script() 功能(即主题、插件等),“何时”在WP方面也很重要Action Reference 钩子,以及它们被发射的顺序。

有两个不同的脚本相关挂钩,wp_enqueue_scriptsadmin_enqueue_scripts, 允许根据用户当前拥有的视图分离脚本和样式。

如果你没有wp_enqueue_script() 如果功能正确,这将是问题的一个潜在原因。

提供有问题的代码将帮助我们找到答案。

编辑:如果您需要/希望脚本仅为登录的非管理员用户排队,则可以使用由两部分组成的条件求值器对其进行包装,如下所示:

if( is_user_logged_in() && !current_user_can( \'administrator\' ) ) {
    // enqueue stuff goes here
}
这是测试您提供的条件的最基本方法,但需要注意的是,有比current\\u user\\u can()更好、更严格的方法来确定用户的角色类型和能力,因为这个简单的函数只返回角色类型,而不是通过插件或主题中其他地方的自定义在角色类型中添加/删除的特定功能,这些更改可能会也可能不会影响您的最终目标。

SO网友:Johansson

要为未登录的用户输出脚本,请结合使用条件wp_enqueue_script():

add_action(\'wp_enqueue_scripts\',\'enqueue_my_script\');
function enqueue_my_script(){
    if (!is_logged_in()) {
        wp_enqueue_script(\'my-script\',\'YOUR SCRIPT URL\');
    }
}
这将仅为未登录的用户将脚本排入队列。如果删除条件,它将为每个人将脚本排队。

如果已经有一个脚本只为管理员排队,那么很可能存在一个条件is_logged_in() 在代码中。尝试查找并删除该行代码。

结束