acf_save_post()


WordPressのacf_save_post()関数は、Advanced Custom Fieldsプラグインでカスタムフィールドの保存処理をフックするために使用されます。この関数を利用することで、投稿やページが保存される際に追加の処理を実行できます。

シンタックス

acf_save_post( $post_id );
  • $post_id (mixed) — 保存対象の投稿ID。’options’などの文字列が渡される場合もあります。

例1: 投稿保存時に特定のメタデータを更新

この例では、投稿保存時に特定のメタデータを更新します。

add_action( 'acf/save_post', function( $post_id ) {
    if ( is_numeric( $post_id ) ) {
        update_post_meta( $post_id, 'custom_meta_key', 'custom_value' );
    }
} );

例2: 保存されたカスタムフィールドデータを検証

保存されるデータが特定の条件を満たしているか検証します。

add_action( 'acf/save_post', function( $post_id ) {
    if ( isset( $_POST['fields']['field_key'] ) ) {
        $field_value = $_POST['fields']['field_key'];
        if ( $field_value !== 'expected_value' ) {
            wp_die( '不正な値です。' );
        }
    }
} );

例3: オプションページデータの処理

オプションページデータを保存する際に特定の処理を実行します。

add_action( 'acf/save_post', function( $post_id ) {
    if ( $post_id === 'options' ) {
        $option_value = get_field( 'option_field_key', 'option' );
        update_option( 'custom_option_key', $option_value );
    }
} );

例4: 投稿タイプごとに異なる処理を実行

投稿タイプに応じて異なる処理を実行します。

add_action( 'acf/save_post', function( $post_id ) {
    if ( get_post_type( $post_id ) === 'custom_post_type' ) {
        // カスタム投稿タイプ用の処理
        update_post_meta( $post_id, 'special_meta', 'value' );
    }
} );

例5: 保存データのログ記録

保存されたデータをログファイルに記録します。

add_action( 'acf/save_post', function( $post_id ) {
    if ( is_numeric( $post_id ) ) {
        $data = json_encode( $_POST['fields'] );
        error_log( "投稿ID: $post_id のデータ: $data" );
    }
} );

注意事項

  • acf_save_post()は、Advanced Custom Fieldsプラグインが有効である場合にのみ動作します。
  • 保存されたデータに基づく処理を行う場合、必ず適切な検証を行い、セキュリティに留意してください。