ACF | Advanced Custom Fieldsまとめ

No Image.
目次

通常時

<?php if(get_field('course-intro')): ?>
    <p><?php the_field('course-intro'); ?></p>
<?php endif; ?>

画像タイプ

①[画像配列]の書き出し方法例

<?php 
$eyecatch = get_field('eyecatch'); 
if( !empty( $eyecatch ) ): ?>
<figure>
    <img src="<?php echo esc_url($eyecatch['url']); ?>" alt="<?php echo esc_attr($eyecatch['alt']); ?>" width="" height=""/>
</figure>
<?php endif; ?>

②[画像URL]の書き出し例

<?php if(get_field('eyecatch')) :?>
<figure>
    <img src="<?php the_field('eyecatch'); ?>" alt="" width="" height=""/>
</figure>
<?php endif; ?>

繰り返しフィールド基本形

<?php if(get_sub_field('move_point')): ?>
<?PHP while(have_rows('move_point')): the_row(); ?>
	<?php if(get_sub_field('train-line')) :?>
	<small><?php the_sub_field('train-line'); ?></small>
	<?php endif; ?>
  <?php if(get_sub_field('move-point-name')) :?>
      <h3><?php the_sub_field('move-point-name'); ?></h3>
  <?php endif; ?>
<?php endwhile; //end move_point ?>
<?php endif; //end move_point ?>

子要素は必ず「sub_field」を使用すること。

柔軟コンテンツ

<?php if(have_rows('spot-info')): ?>
<?php while(have_rows('spot-info')): the_row(); //柔軟コンテンツフィールド ?>

    <?php if(get_row_layout() === 'spot-info-textarea' ): // 本文レイアウト ?>
    <p><?php echo get_sub_field( 'spot-info-text' ); ?></p>
    <?php endif; ?>
    
    <?php if(get_row_layout() === 'spot-media' ): // メディア ?>
        <div class="media">
        <figure class="media_image"><img src="<?php echo get_sub_field( 'spot-media-image' ); ?>" alt="<?php echo get_sub_field( 'spot-media-image' ); ?>"></figure>
        <div class="media_text"><?php echo get_sub_field( 'spot-media-text' ); ?></div>
        </div>
    <?php endif; ?>

<?php endwhile; //end spot-info ?>
<?php endif; //end spot-info ?>

グループフィールド

①代入式

<?php
$companyInfo = get_field('company_info');
?>
<h3>会社概要</h3>
<dl>
<dt>会社名</dt>
<dd><?php echo $companyInfo['company_name']; ?></dd>
<dt>所在地</dt>
<dd><?php echo $companyInfo['company_location']; ?></dd>
</dl>

get_fieldでグループフィールドのフィールド名を取得し、$companyInfoに代入しています。

会社名や所在地は、$companyInfo(グループフィールド「company_info」)の配列として返ってくるので、フィールド名で指定すると出力することができます。

参照:https://usagicode.com/wordpress/how-to-use-acf-group-field/

②ループ式

<h3>会社概要</h3>
<?php if( have_rows('company_info') ): ?>
<?php while( have_rows('company_info') ): the_row(); ?>
<dl>
<dt>会社名</dt><dd><?php the_sub_field('company_name'); ?></dd>
<dt>所在地</dt><dd><?php the_sub_field('company_location'); ?></dd>
</dl>
<?php endwhile; ?>
<?php endif; ?>

繰り返しフィールドと同様の方法でも作成できます。

小技

①省略形

<h3>会社概要</h3>
<?php if( have_rows('company_info') ): while( have_rows('company_info') ): the_row(); ?>
<dl>
<dt>会社名</dt><dd><?php the_sub_field('company_name'); ?></dd>
<dt>所在地</dt><dd><?php the_sub_field('company_location'); ?></dd>
</dl>
<?php endwhile; endif; ?>

ifとwhileの間に挟むものがない場合は、一つにまとめることができます。

②カウント式


<?php if(have_rows('bullet-arrival')): $i=1; //初期値 ?>
<ul class="ut_course_route_list">
<?php while(have_rows('bullet-arrival')): the_row(); //新幹線~観光地まで ?>
    <li>
    <?php if(get_sub_field('arrival-type')): ?>
	     <a href="#spot<?php echo $i; ?>"><span class="ut_icon <?php the_sub_field('arrival-type'); ?>">アイコン</span></a>
    <?php endif; ?>
    </li>
    <?php $i++; //カウントアップ ?>
<?php endwhile; ?>
</ul>
<?php endif; ?>

$iに1を代入し、クラス名に出力しています。

ループの最後にカウントアップしていくことで、リンク先が「#spot1」「#spot2」「#spot3」と増えていきます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次