• 解決済 photographer hiro.

    (@mura0403)


    現在アドバンスドカスタムフィールドの関連という項目を使い、選んだ投稿からIDを取得して該当記事の情報を引っ張って表示しています。

    ソースは下記のの通りです。
    このやり方ですと、最初に選べれる項目数を想定して作成しなくてはいけません。
    whileなどを活用したりなど、効率よいやり方はあるのでしょうか。

    恐れ入りますが、教えて頂けると幸いです。
    よろしくお願い致します。

    <?php if ( get_field('works-place') ): //入力時のみ表示 ?>
        <?php
    	$obj=get_field('works-place'); //最大10か所まで取得
    	$obj1=$obj[0]->ID;// 1番上にある記事の ID を表示
    	$obj2=$obj[1]->ID;// 2番上にある記事の ID を表示
    	$obj3=$obj[2]->ID;// 2番上にある記事の ID を表示
    	$obj4=$obj[3]->ID;// 2番上にある記事の ID を表示
    	$obj5=$obj[4]->ID;// 2番上にある記事の ID を表示
    	$obj6=$obj[5]->ID;// 2番上にある記事の ID を表示
    	$obj7=$obj[6]->ID;// 2番上にある記事の ID を表示
    	$obj8=$obj[7]->ID;// 2番上にある記事の ID を表示
    	$obj9=$obj[8]->ID;// 2番上にある記事の ID を表示
    	$obj10=$obj[9]->ID;// 2番上にある記事の ID を表示
    	?>
    
        <section class="tr-recruit">
          <h4 class="td-left">勤務地</h4>
           <p class="td-right">
           <span class="inner-cell">
    
            <?php if(get_post_meta($obj[0]->ID)): ?>
            <span class="block" style="display:block;">
            <strong><?php echo get_the_title($obj1); ?></strong>
            <?php the_field('place_add',$obj1); ?>
            <a class="access-link" href="<?php echo get_permalink($obj1) ?>" target="_blank" title="<?php echo get_the_title($obj1); ?>の詳しい情報を見る">詳しい情報</a>
            </span>
            <?php endif; ?>
    
            <?php if(get_post_meta($obj[1]->ID)): ?>
            <span class="block" style="display:block;">
            <strong><?php echo get_the_title($obj2); ?></strong>
            <?php the_field('place_add',$obj2); ?>
            <a class="access-link" href="<?php echo get_permalink($obj2) ?>" target="_blank" title="<?php echo get_the_title($obj2); ?>の詳しい情報を見る">詳しい情報</a>
            </span>
            <?php endif; ?>
    
            <?php if(get_post_meta($obj[2]->ID)): ?>
            <span class="block" style="display:block;">
            <strong><?php echo get_the_title($obj3); ?></strong>
            <?php the_field('place_add',$obj3); ?>
            <a class="access-link" href="<?php echo get_permalink($obj3) ?>" target="_blank" title="<?php echo get_the_title($obj3); ?>の詳しい情報を見る">詳しい情報</a>
            </span>
            <?php endif; ?>
    
            <?php if(get_post_meta($obj[3]->ID)): ?>
            <span class="block" style="display:block;">
            <strong><?php echo get_the_title($obj4); ?></strong>
            <?php the_field('place_add',$obj4); ?>
            <a class="access-link" href="<?php echo get_permalink($obj4) ?>" target="_blank" title="<?php echo get_the_title($obj4); ?>の詳しい情報を見る">詳しい情報</a>
            </span>
            <?php endif; ?>
    
            <?php if(get_post_meta($obj[4]->ID)): ?>
            <span class="block" style="display:block;">
            <strong><?php echo get_the_title($obj5); ?></strong>
            <?php the_field('place_add',$obj5); ?>
            <a class="access-link" href="<?php echo get_permalink($obj5) ?>" target="_blank" title="<?php echo get_the_title($obj5); ?>の詳しい情報を見る">詳しい情報</a>
            </span>
            <?php endif; ?>
    
            <?php if(get_post_meta($obj[5]->ID)): ?>
            <span class="block" style="display:block;">
            <strong><?php echo get_the_title($obj6); ?></strong>
            <?php the_field('place_add',$obj6); ?>
            <a class="access-link" href="<?php echo get_permalink($obj6) ?>" target="_blank" title="<?php echo get_the_title($obj6); ?>の詳しい情報を見る">詳しい情報</a>
            </span>
            <?php endif; ?>
    
            <?php if(get_post_meta($obj[6]->ID)): ?>
            <span class="block" style="display:block;">
            <strong><?php echo get_the_title($obj7); ?></strong>
            <?php the_field('place_add',$obj7); ?>
            <a class="access-link" href="<?php echo get_permalink($obj7) ?>" target="_blank" title="<?php echo get_the_title($obj7); ?>の詳しい情報を見る">詳しい情報</a>
            </span>
            <?php endif; ?>
    
            <?php if(get_post_meta($obj[7]->ID)): ?>
            <span class="block" style="display:block;">
            <strong><?php echo get_the_title($obj8); ?></strong>
            <?php the_field('place_add',$obj8); ?>
            <a class="access-link" href="<?php echo get_permalink($obj8) ?>" target="_blank" title="<?php echo get_the_title($obj8); ?>の詳しい情報を見る">詳しい情報</a>
            </span>
            <?php endif; ?>
    
            <?php if(get_post_meta($obj[8]->ID)): ?>
            <span class="block" style="display:block;">
            <strong><?php echo get_the_title($obj9); ?></strong>
            <?php the_field('place_add',$obj9); ?>
            <a class="access-link" href="<?php echo get_permalink($obj9) ?>" target="_blank" title="<?php echo get_the_title($obj9); ?>の詳しい情報を見る">詳しい情報</a>
            </span>
            <?php endif; ?>        
    
            <?php if(get_post_meta($obj[9]->ID)): ?>
            <span class="block" style="display:block;">
            <strong><?php echo get_the_title($obj10); ?></strong>
            <?php the_field('place_add',$obj10); ?>
            <a class="access-link" href="<?php echo get_permalink($obj10) ?>" target="_blank" title="<?php echo get_the_title($obj10); ?>の詳しい情報を見る">詳しい情報</a>
            </span>
            <?php endif; ?>
          </span>
          </p>
    
          </section><!-- END section.tr-recruit -->
          <?php wp_reset_postdata(); ?><?php else : ?><?php endif; ?>

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • 当該プラグインのドキュメントにサンプルコードがありますので参考になるかと思います。
    foreachを使っていますね。

    http://www.advancedcustomfields.com/resources/relationship/

    トピック投稿者 photographer hiro.

    (@mura0403)

    ikaring様
    ご回答頂きましてありがとうございました。

    ほとんどコピーペーストですが、以下のソースでできました。
    とても助かりました。
    本当にありがとうございました。

    <?php //関連の繰返しサンプル
    $posts = get_field('works-place');//関連のカスタムフィールド名
    if( $posts ):
    ?>
    <ul>
    <?php foreach( $posts as $post): // variable must be called $post (IMPORTANT) ?>
    <?php setup_postdata($post); ?>
      <li>
        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
      </li>
    <?php endforeach; ?>
    </ul>
    <?php wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?>
    <?php endif; ?>

    解決して良かったです^^

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「アドバンスドカスタムフィールドの「関連」について」には新たに返信することはできません。