web-dev-qa-db-ja.com

Adminの場合はwp-admin、一般ユーザーの場合はその他の外部JavaScriptファイルを実行する方法

私はWordPressのプラグインに不慣れです、そして私は必要ないくつかのスクリプトで外部のJS/jQueryファイルをロードしようとしています。 wp-adminページで起動する必要があります(有効化されたときに一度だけではありません)。一般ユーザー用と管理者用のJSファイルがあります。

function wp_ui_activation() {
}

register_activation_hook(__FILE__, 'wp_ui_activation');

function wp_ui_deactivation() {
}

register_deactivation_hook(__FILE__, 'wp_ui_deactivation');

add_action('wp_enqueue_scripts', 'wp_ui_scripts');

function wp_ui_scripts() {  
    wp_enqueue_script('jquery'); //add jquery

    if (!is_admin()) { // it's not admin
        wp_register_script('custom_script', plugins_url('assets/js/custom_script.js', __FILE__),array('jquery')); //register custom_script
        wp_enqueue_script('custom_script'); //add custom_script
    }

    if(is_admin()){ // it's admin
        wp_register_script('custom_admin_script', plugins_url('assets/js/custom_admin_script.js', __FILE__),array('jquery')); //registra custom_admin_script
        wp_enqueue_script('custom_admin_script'); //add custom_admin_script
    }       
}

JSファイル内にあるのはjQuery(function() {alert("admin")});jQuery(function() {alert("no-admin")});だけですが、どれも表示されません...

何が足りないの?

1
ghaschel

管理スクリプトをadmin_enqueue_scriptsではなく wp_enqueue_scripts に登録/エンキューする必要があります。 wp_enqueue_scriptsはフロントエンドのフックです。管理ページでは動作しません。

次に、 is_admin() は、ユーザーが管理者かどうかではなく、ページが管理者ページかどうかを確認するだけです。ユーザーが管理者であるかどうかを確認するには

$current_user = wp_get_current_user();
if (user_can( $current_user, 'administrator' )) {
  // user is an admin
}

参照:

http://codex.wordpress.org/Function_Reference/user_can
http://codex.wordpress.org/Function_Reference/wp_get_current_user

3
s_ha_dum