为特定用户角色添加jQuery代码片段

时间:2016-10-10 作者:Sam

如果当前用户是特定的用户角色,我想在编辑页面中添加一个小代码段。

我确实知道如何在php中检查userrole,但我不知道如何确定该页面是编辑帖子还是编辑页面页面,以及如何使用php添加代码段。请注意,jQuery此时必须可用。

我不想使用wp_enqueue_scripts 因为它实际上只是一个小片段,我不想为此创建新文件。代码应该在我的functions.php

根据格雷格·麦克马伦的回答,我写了以下内容,效果很好。

function function_to_run() {
  if ($_GET[\'action\'] != "edit"){
    return;
  }

  $user_roles = array(\'role1\', \'role2\');

  foreach ($user_roles as $user_role) {
    if( current_user_can($user_role) ) {
      wp_enqueue_script( \'pending_post\', get_template_directory_uri() . \'/js/script1.js\' );
    }
    else {
      wp_enqueue_script( \'pending_post\', get_template_directory_uri() . \'/js/script2.js\' );
    }
  }
}
add_action( \'admin_enqueue_scripts\', \'function_to_run\' );
然而,我认为包含两个不同的文件,每个文件包含两行代码是非常肮脏的。

即使这不是最佳实践,我也希望将js代码添加到php文件中。这怎么可能?

1 个回复
SO网友:Greg McMullen

您应该能够使用admin_enqueue_scripts 钩子在编辑页面上加载代码段,如中所示this example 来自法典

function my_enqueue($hook) {
    if ( \'edit.php\' != $hook ) {
        return;
    }

    wp_enqueue_script( \'my_custom_script\', get_template_directory_uri() . \'/myscript.js\' );
}
add_action( \'admin_enqueue_scripts\', \'my_enqueue\' );