概要
elementor/frontend/{$element_type}/should_render
フィルタは、Elementorの特定のウィジェットがレンダリングするかどうかを制御するために使用されます。このフィルタを使用することにより、特定の条件に基づいてウィジェットの表示を変更したり、ログイン状態やユーザーの役割に応じてウィジェットの出力を制御することができます。
このフィルタは、以下のような機能を実装する際によく使用されます:
- ユーザーのログイン状態に基づくウィジェットの制御
- 特定のユーザー役割に対してウィジェットを非表示にする
- カスタム条件に基づくコンテンツの動的表示
- ページや投稿のメタデータに連動したウィジェットの表示
- ショートコードの存在に基づく関連コンテンツの制御
- A/Bテストにおけるランダムなウィジェットの表示制御
構文
function your_function_name( $should_render, $element ) {
// コードを記入
return $should_render;
}
add_filter( 'elementor/frontend/{element_type}/should_render', 'your_function_name', 10, 2 );
パラメータ
$should_render
(bool):ウィジェットがレンダリングされるべきかどうかのフラグ。$element
(ElementorWidget_Base):現在のウィジェットインスタンス。
戻り値
- bool:ウィジェットがレンダリングされる場合は
true
、それ以外はfalse
を返します。
使用可能なプラグインとバージョン
- Elementor:バージョン 2.0.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/frontend/widget/should_render', function( $should_render, $widget ) {
if ( ! is_user_logged_in() ) {
return false; // ログインしていない場合はレンダリングしない
}
return $should_render;
} );
説明: これは、ユーザーがログインしていない場合に特定のウィジェットの表示を防ぎます。
サンプル 2
add_filter( 'elementor/frontend/widget/should_render', function( $should_render, $widget ) {
if ( ! current_user_can( 'administrator' ) ) {
return false; // 管理者でない場合はレンダリングしない
}
return $should_render;
} );
説明: 管理者ユーザーのみがウィジェットを表示できるよう制御します。
サンプル 3
add_filter( 'elementor/frontend/widget/should_render', function( $should_render, $widget ) {
$post_type = get_post_type();
if ( $post_type !== 'special_post_type' ) {
return false; // 指定された投稿タイプ以外はレンダリングしない
}
return $should_render;
} );
説明: 特定の投稿タイプに対してのみウィジェットを表示する制御です。
サンプル 4
add_filter( 'elementor/frontend/widget/should_render', function( $should_render, $widget ) {
$user_meta = get_user_meta( get_current_user_id(), 'show_widget', true );
if ( !$user_meta ) {
return false; // ユーザーメタが設定されていない場合はレンダリングしない
}
return $should_render;
} );
説明: ユーザーメタ情報に基づいてウィジェットの表示を制御します。
サンプル 5
add_filter( 'elementor/frontend/widget/should_render', function( $should_render, $widget ) {
if ( ! is_page( 'contact' ) ) {
return false; // 'contact' ページでない場合はレンダリングしない
}
return $should_render;
} );
説明: 特定のページ(この場合は「contact」ページ)でのみウィジェットを表示します。