2020/05/25 20:04
[Wordpress]ACF(Advanced Custom Fields)コピペで簡単いろんな出力方法のメモ
WordPressのプラグインですごく便利なACF(Advanced Custom Fields)の出力方法のメモです。
今回は忘れがちでめんどくさいラジオボタンやチェックボックス、セレクトボックス、真偽、関連、繰り返しフィールド等のコピペ用出力コードをメモしておきます。
ACFとは?
WordPressのプラグインで必須なものを選べと言われたら迷わずコレを真っ先に選びます。
ACF(Advanced Custom Fields)
https://www.advancedcustomfields.com/
アドバンスドカスタムフィールド、通称ACFですね。
何ができるプラグインなのかっていうと、WP管理画面内に任意のオプション項目欄を作って、そこで楽に設定して自由に出力したい場所に吐き出せるので、管理画面内からの更新や修正が簡単にできます。
無料版と有料版(Pro)があると思うんですが、有料版には「繰り返しフィールド」っていう最強の項目が使えるようになるのでオススメです。
※2020年2月頃からPro版はサブスクになってるようです
カスタムフィールドを使った記述によって、WPのテーマやシステム的な部分を作っていくのにとても便利に進められる事は間違いありません。
ただ、今回はACFの良さをオススメする為の記事ではなくて、ACFを元々知ってて、使ってて、「あの出力ってどう書くんだっけ…」という方向けの記事となってますので、詳細は割愛させていただきます。ご了承ください。
出力用メモ(本題)
基本の出力
<?php echo get_field('【フィールド名】');?>
これが一番基本となる出力となります。
これは一発で覚えられますね。
以下、けっこう忘れがちの出力の記述例です。
ちなみにオプションを使って出力する時はget_field('',option)って「,option」ってのを付けなければいけないので忘れずに。
つまり
<?php echo get_field('【フィールド名】',option);?>
こうですね。
ラジオボタン
例)
・出力例(一致させるものを表示)
<?php if( '【選択肢】' == get_field('【フィールド名】')):?>
【一致する時に表示するものをここに記述】
<?php endif;?>
・選択したラベルを表示
<?php
$field = get_field_object('【フィールド名】'); //フィールドの設定情報を取得
$value = $field['value']; //選択された値を取得
$label = $field['choices'][ $value ];//選択された表示名(ラベル)を取得
?>
<?php echo $label; // 表示させる ?>
チェックボックス
例)
・出力例(一致させるものを表示)
<?php $checkbox = get_field('【フィールド名】');?>
<?php if( $checkbox && in_array('【選択肢】', $checkbox )):?>
【一致する時に表示するものをここに記述】
<?php endif;?>
・一覧で出力させる場合
<?php
$field = get_field_object('【フィールド名】');
$checkbox = $field['value'];
if( $checkbox ):
?>
<ul>
<?php foreach( $checkbox as $check ): ?>
<li><?php echo $field['choices'][ $check ]; ?></li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
・ループ内で使う場合
<?php
$args = array(
'post_type' => 'post',
'meta_query' => array(
'relation' => 'AND',
array(
'key' => '【フィールド名】', //ACFで設定したフィールド名
'value' => '【選択肢】', //選択肢例
'compare' => '=', //イコールのものを抽出
),
),
'order' => 'DESC',
'showposts' => 3,
);
$my_query = new WP_Query($args);
if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post();?>
【一致する時に表示するものをここに記述】
<?php endwhile; ?>
<?php endif; wp_reset_postdata();?>
セレクトボックス
例)
・出力例(セレクトされたものを表示)
<?php
$field = get_field_object('【フィールド名】');
$value = $field['value'];
$label = $field['choices'][ $value ];
?>
<?php echo $label; // 表示させる ?>
真/偽
if( get_field('【フィールド名】') ) //真の場合
{
echo '真の場合にすること';
}
else // 偽の場合
{
echo '偽の場合にすること';
}
繰り返しフィールド
・基本的な出力
<?php if(have_rows('【フィールド名】')):?>
<?php while(have_rows('【フィールド名】')): the_row();?>
<?php echo get_sub_field('【中身のフィールド名】'); // 表示 ?>
<?php endwhile;?>
<?php endif;?>
※ループ内の中身のフィールドは「get_sub_field('')」とすること
・繰り返しフィールドの中身をランダムで任意の個数だけ出力
<?php $i = 0;?>
<?php if($rows = get_field('【フィールド名】',option)):?>
<?php shuffle($rows);?>
<?php foreach($rows as $rand_row):?>
<?php $rand_item = $rand_row['【中身のフィールド名】'];?>
<?php $i++;?>
<?php if($i > 3): // 例えば3つだけ出力したい場合 ?>
<?php break;?>
<?php endif;?>
<?php echo $rand_item; // 表示 ?>
<?php endforeach;?>
<?php endif;?>
・繰り返しフィールド内の数を取得
<?php $count = count(get_field('【フィールド名】')); ?>
<?php echo $count; // 表示 ?>
入れ子の場合
<?php echo count(get_sub_field('【フィールド名】')); ?>
ギャラリー
<?php
$images = get_field('【フィールド名】');
if( $images ):
?>
<ul>
<?php foreach( $images as $image ): ?>
<li>
<a href="<?php echo $image['url']; ?>">
<img src="<?php echo $image['sizes']['thumbnail']; ?>" alt="<?php echo $image['alt']; ?>" />
</a>
<p class="caption"><?php echo $image['title']; ?></p>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
関連
<?php
$posts = get_field('【フィールド名】');
if( $posts ): ?>
<?php foreach( $posts as $post): ?>
<?php setup_postdata($post); ?>
【表示するものをここに記述】
<?php endforeach; ?>
<?php wp_reset_postdata(); ?>
<?php endif; ?>
他にもACFにはいろんな項目が設定できますが、今回はよく使うものを中心にメモ書きとして掲載しておきました。
ACFに関してはかなり便利なプラグインとして重宝してますので、また他の便利な使い方の記事等も書いていこうかと思います。
では現場から以上です!
3982