プラグインElementorのelementor/role/restrictions/controlsフィルタの使用方法・解説

概要

elementor/role/restrictions/controls フィルタは、Elementorプラグインにおいて特定のユーザーロールや権限に基づいて、コントロール(ウィジェットや機能)の表示や利用を制限するために使用されます。このフィルタを利用することで、特定のユーザーの権限に応じたカスタマイズが可能になります。

このフィルタは、以下のような機能を実装する際によく使われます。

  1. 管理者だけが使用できる特定のウィジェットを作成。
  2. 投稿者に限り、特定の設定項目を無効にする。
  3. 特定のユーザーグループに対して特別なスタイルや機能を適用。
  4. 編集者向けにのみ、選択可能なカスタム設定を提供。
  5. 執筆者と編集者で異なるウィジェットオプションを表示。
  6. 特定のユーザーに対し、Elementorの設定画面の一部を制限。

構文

add_filter('elementor/role/restrictions/controls', 'your_function_name', 10, 2);

パラメータ

  1. $controls (array): Elementorのコントロールの配列。
  2. $user_role (string): 現在のユーザーのロール。

戻り値

このフィルタの戻り値は、変更されたコントロールの配列です。

使用可能なプラグインバージョン

  • Elementor: バージョン3.0以降
  • WordPress: バージョン5.0以降

この関数のアクションでの使用可能性

アクション名 使用可能
mu_plugin_loaded
registered_post_type
plugins_loaded
wp_roles_init
setup_theme
after_setup_theme
set_current_user
init
register_sidebar
wp_loaded
send_headers
parse_query
pre_get_posts
wp
template_redirect
get_header
wp_head

サンプルコード

サンプル1: 管理者のみウィジェットを表示

add_filter('elementor/role/restrictions/controls', function( $controls, $user_role ) {
    if ( ! current_user_can( 'administrator' ) ) {
        unset( $controls['my_special_widget'] );
    }
    return $controls;
});

このサンプルコードは、管理者のみが「my_special_widget」というウィジェットを利用できるように制限します。非管理者はこのウィジェットが表示されなくなります。

サンプル2: 投稿者向けの設定項目の無効化

add_filter('elementor/role/restrictions/controls', function( $controls, $user_role ) {
    if ( $user_role === 'author' ) {
        unset( $controls['advanced_settings'] );
    }
    return $controls;
});

このコードは、投稿者ユーザーが「advanced_settings」という設定項目を使用できないように制限します。

サンプル3: 編集者向けに特別なオプションを表示

add_filter('elementor/role/restrictions/controls', function( $controls, $user_role ) {
    if ( $user_role === 'editor' ) {
        $controls['special_option'] = [
            'type' => 'select',
            'label' => __('Special Option', 'plugin-name'),
            'options' => [
                'yes' => __('Yes', 'plugin-name'),
                'no' => __('No', 'plugin-name'),
            ],
        ];
    }
    return $controls;
});

このサンプルでは、編集者に対して「special_option」を追加し、特別な選択肢を表示します。

サンプル4: 特定のユーザーグループにスタイル適用

add_filter('elementor/role/restrictions/controls', function( $controls, $user_role ) {
    if ( in_array( $user_role, [ 'editor', 'administrator' ] ) ) {
        $controls['custom_style'] = [
            'type' => 'color',
            'label' => __('Custom Style', 'plugin-name'),
        ];
    }
    return $controls;
});

このサンプルコードは、編集者または管理者のユーザーグループに「custom_style」というカラーピッカーを表示します。

サンプル5: 執筆者に特定のウィジェットオプションを制限

add_filter('elementor/role/restrictions/controls', function( $controls, $user_role ) {
    if ( $user_role === 'contributor' ) {
        unset( $controls['restricted_widget'] );
    }
    return $controls;
});

このコードは、執筆者ユーザーが「restricted_widget」というウィジェットを利用できないように制限します。

この関数について質問する


上の計算式の答えを入力してください