概要
acf/shortcode/prevent_access
フィルタを使用することで、ACFショートコードによって出力できるフィールドを制限できます。このフィルターから true
を返すと、ショートコードによって値が出力されなくなります。この機能は、次のようなシナリオで特に有用です:
- ユーザーの役割に基づいてコンテンツの表示を制限したい場合。
- 特定の条件下でのみデータを表示する必要がある場合。
- 管理者によるコンテンツの公開前に、特定のフィールドを隠したい場合。
- テスト環境で一時的にフィールドを非表示にしたい場合。
- 特定のページや投稿の状況に応じてデータの表示を調整したい場合。
- セキュリティ上の理由から、特定のユーザーに対してフィールドのアクセスを制限したい場合。
構文
add_filter('acf/shortcode/prevent_access', 'my_acf_shortcode_access', 10, 3);
パラメータ
bool $prevent_access
– フィールドのアクセスを防ぐかどうかを決定する初期値(trueまたはfalse)。$atts
– ショートコードに渡された属性の配列。$field
– 処理中のACFフィールドの情報を含む配列。
戻り値
bool
– フィールドへのアクセスを許可する場合にはfalse
を返し、アクセスを防ぐ場合にはtrue
を返す。
対応バージョン
- Advanced Custom Fields (ACF): 5.0.0 以降
- WordPress: 4.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: ユーザーの役割に応じてフィールドを隠す
function my_acf_shortcode_access($prevent_access, $atts, $field) {
if (current_user_can('subscriber')) {
return true; // subscribers cannot access the field
}
return false; // others can access the field
}
add_filter('acf/shortcode/prevent_access', 'my_acf_shortcode_access', 10, 3);
このサンプルでは、ユーザーが「購読者」役割の場合にACFフィールドへのアクセスを防ぎます。
サンプル 2: テスト環境でフィールドを非表示に
function my_acf_test_environment_access($prevent_access, $atts, $field) {
if (defined('WP_ENV') && WP_ENV === 'development') {
return true; // In development mode, prevent access
}
return false;
}
add_filter('acf/shortcode/prevent_access', 'my_acf_test_environment_access', 10, 3);
ここでは、開発環境で実行されている場合にフィールドのアクセスを制限します。
サンプル 3: スラッグに基づくアクセス制限
function my_acf_slug_access($prevent_access, $atts, $field) {
if (is_single('private-post')) {
return true; // prevent access for a specific post slug
}
return false;
}
add_filter('acf/shortcode/prevent_access', 'my_acf_slug_access', 10, 3);
特定の投稿スラッグに基づいてフィールドへのアクセスを制限する例です。
サンプル 4: モバイルユーザーの表示制限
function my_mobile_user_access($prevent_access, $atts, $field) {
if (wp_is_mobile()) {
return true; // prevent access for mobile users
}
return false;
}
add_filter('acf/shortcode/prevent_access', 'my_mobile_user_access', 10, 3);
モバイルユーザーがフィールドにアクセスできないようにします。
サンプル 5: 管理者以外のユーザーからのアクセス制限
function my_admin_only_access($prevent_access, $atts, $field) {
if (!current_user_can('administrator')) {
return true; // only administrators can access the field
}
return false;
}
add_filter('acf/shortcode/prevent_access', 'my_admin_only_access', 10, 3);
管理者権限を持たないユーザーからフィールドへのアクセスを制限するサンプルです。