• 解決済 mikujin

    (@mikujin)


    お世話になります。
    ACFで作成した項目で、「名前(フィールドタイプ:ユーザー)」と「現在のステップ(フィールドタイプ:select)」を選択すると、ステップ1のエリアにACFで選択した名前が表示されるように現在以下のコードで実装しています。

    <div class="step1-area">
    <?php if(get_post_meta( $post->ID , 'step1' , true ) == 'ステップ1'): ?>
    <?php $user = get_field( 'name1' ); ?>
    <?php if ( $user ) : ?>
    <a href="<?php echo esc_url( $user['user_url'] ); ?>"><?php echo esc_html( $user['display_name'] ); ?></a>
    <?php endif; ?>
    <?php endif; ?>
    </div>

    これでも名前は表示されるのですが、ユーザー数の増加ごとに手動でname1,name2,name3..の分を追記していかないといけず、また、現在のステップが変わるごとに、step1,step2,step3..の分も追記が必要となり、かなりのデータ量になってしまうので、まとめたいのですが、どのようなコードにすれば実装ができるか分からず困っています。

    「名前(フィールドタイプ:ユーザー)」か「現在のステップ(フィールドタイプ:select)」のどちらか、もしくはどちらにも固有のフィールド名をつけず、下記のコードで試してみたのですが、ACFの値が保存できず、どのような考え方で実装すればよいのか分かりません。

    <div class="step1-area">
    <?php if(get_post_meta( $post->ID , 'step' , true ) == 'ステップ'): ?>
    <?php $user = get_field( 'name' ); ?>
    <?php if ( $user ) : ?>
    <a href="<?php echo esc_url( $user['user_url'] ); ?>"><?php echo esc_html( $user['display_name'] ); ?></a>
    <?php endif; ?>
    <?php endif; ?>
    </div>

    お力貸して頂けると幸いです。
    どうぞ宜しくお願いいたします。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック投稿者 mikujin

    (@mikujin)

    自己解決しました。
    1.2.3….のようなフィールド名+連番は、$numで数字の範囲(下記コードでは1から31)を設定してから、フィールド名に$numを付け加えることで実装ができました。
    これで連番分のコードを書くことなく、すっきりします。

    <?php $num = 1;
    while ($num < 31) { ?>
    <div class="step1-area">
    <?php if(get_post_meta( $post->ID , 'step' . $num , true ) == 'ステップ1'): ?>
    <?php $user = get_field( 'name' . $num ); ?>
    <?php if ( $user ) : ?>
    <a href="<?php echo esc_url( $user['user_url'] ); ?>"><?php echo esc_html( $user['display_name'] ); ?></a>
    <?php endif; ?>
    <?php endif; ?>
    </div>
    <?php $num++;
    } ?>
    • この返信は3年、 2ヶ月前にmikujinが編集しました。
1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「ACFの出力値の汎用的なコードの書き方」には新たに返信することはできません。