acf_update_loop()


Advanced Custom Fields (ACF)のacf_update_loop()関数は、カスタムフィールドデータを特定の条件でループ内で更新するために使用されます。

シンタックス

acf_update_loop( callable $callback, array $options = array() );

引数の説明:

  • $callback (callable) — 各ループ内で実行されるコールバック関数。
  • $options (array) — オプションパラメータ。例: フィールドグループやポストタイプの指定。

例1: 特定の投稿タイプのフィールドを更新

投稿タイプが'product'の場合に、価格フィールドを更新します。

acf_update_loop( function( $post_id ) {
    update_field( 'price', 100, $post_id );
}, array( 'post_type' => 'product' ) );

例2: フィールドの値に基づいて他のフィールドを更新

フィールド'status''active'の場合に、別のフィールドを更新します。

acf_update_loop( function( $post_id ) {
    if ( get_field( 'status', $post_id ) === 'active' ) {
        update_field( 'promotion', true, $post_id );
    }
});

例3: 特定のカテゴリ内の投稿を対象にフィールドを更新

カテゴリが'sale'の投稿で値を更新します。

acf_update_loop( function( $post_id ) {
    if ( has_category( 'sale', $post_id ) ) {
        update_field( 'discount', 20, $post_id );
    }
});

例4: 投稿の公開日を元にフィールドを変更

投稿が1年以上前の場合、ステータスを'archived'に設定します。

acf_update_loop( function( $post_id ) {
    if ( strtotime( get_the_date( 'Y-m-d', $post_id ) ) < strtotime( '-1 year' ) ) {
        update_field( 'status', 'archived', $post_id );
    }
});

例5: フィールドグループを指定して更新

特定のフィールドグループ'custom_group'に属するすべてのフィールドを更新します。

acf_update_loop( function( $post_id ) {
    update_field( 'custom_field', 'new_value', $post_id );
}, array( 'field_group' => 'custom_group' ) );

注意点

  • 関数を使用する際は、必ず意図したフィールドや条件を明確に設定してください。
  • ACF Proバージョンが必要な場合があります。