QA Heatmap Analytics専門の閲覧アカウントを作成する

※アンバサダーのuzurea.netさんから情報提供頂いた内容をもとに記事を作成しました。ありがとうございます。

WordPressの権限機能をカスタマイズすることで、特定のアカウントでQA Heatmap Analyticsだけを閲覧できるようすることができます。手順は下記です。

  1. 任意のユーザーを追加する。ダッシュボードを閲覧する権限は購読者でも大丈夫ですが、ヒートマップを閲覧できるようにするには現状ver1.1.3では管理者(有料プランは編集者以上)である必要があります。
  2. お使いのthemeのfunctions.phpに下記に記載しているコードを追加します。
  3. 2のコード中の’login_name’(2箇所)を、1で追加したユーザーのログインIDに入れ替えます。
    1. 例)$user_login === ‘myname@test.com’
  4. 2のコードの中の$need_submenusという変数のところで、1のユーザーに必要なサブメニュー名を追加したり残します。
    1. 例)$need_submenus = [‘ダッシュボード’];
  5. 1のユーザーログインし、QA Heatmap Analyticsの管理画面URLに直接アクセスすると、正しく4で設定したメニューが閲覧できることを確認します。

add_cap関数を用いるため、上記の設定を行うと該当ユーザーには永久的にQA Heatmap Analyticsの閲覧権限が与えられます(DBのuser_metaに保存されます)。不要になった権限を削除するには、ユーザーごと削除するか、remove_cap関数を活用してください。

functions.phpに追加するコード

//管理者画面へのアクセス権を付与
function qa_roleadd_func ( $user_login , $current_user ) {
    //権限を与えたいユーザーのログインIDを指定します
    if ( $user_login === 'login_name' ) {
        $current_user->add_cap('manage_options');
    }
}
add_action( 'wp_login', 'qa_roleadd_func', 10, 2 );

//管理画面の不要なメニューを消す
function remove_admin_menus() {
    $currentuser = wp_get_current_user();
    if ( $currentuser->user_login === 'login_name' ) {

        //QA Heatmap Analytics以外のメニューを消します
        //下記で消せないメニューは、themeに入っているfunctions.phpなどで直接追加されている可能性があります。
        global $menu;
        foreach ( $menu as $idx => $eachmenu ) {
            if ( $eachmenu[0] !== 'QA Heatmap Analytics' ) {
                unset( $menu[$idx] );
            }
        }

        //QA Heatmap Analytics サブメニューコントロール
        //必要なメニュー名を記入しておきます。
        $need_submenus = ['ダッシュボード', 'サイト統計情報', 'ヒートマップ管理'];
        global $submenu;
        foreach ( $submenu['qahm-realtime'] as $idx => $eachsub ) {
            $is_need = false;
            foreach ( $need_submenus as $need_submenu ) {
                if ( $eachsub[0] === $need_submenu ) {
                    $is_need = true;
                }
            }
            if ( ! $is_need ) {
                unset( $submenu['qahm-realtime'][$idx] );
            }
        }
    }
}
add_action('admin_menu', 'remove_admin_menus');

この記事は役に立ちましたか?

関連記事