acf_maybe_add_action()


関数acf_maybe_add_action()は、Advanced Custom Fields (ACF) プラグインのアクションを動的に追加するための便利なツールです。この関数を使用することで、条件に基づいてアクションを登録することができます。

シンタックス

acf_maybe_add_action( string $action, callable $callback, int $priority = 10, int $accepted_args = 1 );

引数の説明:

  • $action (string) — 登録するアクション名。
  • $callback (callable) — アクションが実行されたときに呼び出されるコールバック関数。
  • $priority (int) — アクションの優先順位。デフォルトは10。
  • $accepted_args (int) — コールバック関数に渡される引数の数。デフォルトは1。

例 1: 投稿のメタデータを保存

新しい投稿が保存されるたびに、カスタムフィールドを更新する例。

acf_maybe_add_action( 'save_post', function( $post_id ) {
    if ( ! current_user_can( 'edit_post', $post_id ) ) {
        return;
    }
    update_field( 'custom_field_name', '値', $post_id );
}, 10, 1 );

例 2: フロントエンドでスクリプトを登録

テーマのヘッダー部分にスクリプトを動的に追加する例。

acf_maybe_add_action( 'wp_enqueue_scripts', function() {
    wp_enqueue_script( 'custom-script', get_template_directory_uri() . '/js/custom.js', [], null, true );
}, 10, 0 );

例 3: 管理画面でメニューを追加

ACFオプションページにカスタムメニューを動的に追加する例。

acf_maybe_add_action( 'acf/init', function() {
    if ( function_exists( 'acf_add_options_page' ) ) {
        acf_add_options_page( [
            'page_title' => 'カスタム設定',
            'menu_title' => 'カスタム設定',
            'menu_slug'  => 'custom-settings',
        ] );
    }
}, 10, 0 );

例 4: 条件付きでショートコードを登録

条件に応じてショートコードを登録する例。

acf_maybe_add_action( 'init', function() {
    if ( is_user_logged_in() ) {
        add_shortcode( 'custom_shortcode', function() {
            return '<p>ログインユーザー専用のコンテンツ</p>';
        } );
    }
}, 10, 0 );

例 5: 投稿タイプごとのカスタムフィールドを処理

特定の投稿タイプに基づいてカスタムフィールドを処理する例。

acf_maybe_add_action( 'save_post', function( $post_id ) {
    if ( get_post_type( $post_id ) !== 'product' ) {
        return;
    }
    update_field( 'product_field', '新しい値', $post_id );
}, 10, 1 );

注意点

acf_maybe_add_action()は、条件が満たされない場合には何も登録されません。そのため、アクションが確実に必要な場合は、条件を正しく設定することを確認してください。また、デフォルトの値を上書きしたい場合には、優先順位や引数の数を適切に指定してください。