【Advanced Custom Fields】カスタムフィールドの値で絞り込んでループで記事一覧を表示する方法【WordPress】

  • URLをコピーしました!

スポンサーリンク

こんばんは、トウコ(@at_tokotoko)です。

最近はお仕事でWordpressのカスタマイズをすることが多くて、結構楽しいです。
先日ACF(Advanced Custom Fields)を使う案件がありましたので、備忘録のつもりで書いておきます。

もくじ

カスタムフィールドの値で検索結果を表示したい

例えば、共同でイラストサイトを運営している会社があるとして、メンバーをカスタム投稿で管理してメンバー一覧ページを作成します。
メンバー一覧にはいま仕事をしている人と、今仕事を持ってなくてフリーの人がいるとし、その状態がわかるように一覧には記載があります。
仕事中・受付可能をカスタムフィールドのセレクトボックスで選び、メンバー一覧ページとは別のところに受付可能なメンバーだけを表示したい!

…というような要望を実現する方法です。

①ACFでセレクトボックスを作成する

ACFの設定画面
ACFの設定画面

「状況」というセレクトボックスを作成し、フィールド名は「status」にしました。
セレクトボックスの選択肢には値とラベルを設定します。

free : 受付可能
working : 仕事中

これで保存します。

②載せたい場所にコードを記述する

<?php $args = array(
		'posts_per_page'	=> 5, //5件表示する
		'post_type'			=> 'member_profile',  //カテゴリー
		'orderby'			=> 'date',  //日付順
        'order'				=> 'DESC', //降順
        'meta_key' 			=> 'status', //カスタムフィールドのキー
        'meta_value' 		=> 'free', //カスタムフィールドの値
        'meta_compare' 		=> 'LIKE' //'meta_value'のテスト演算子
          );
$my_query = new WP_Query($args);
if ($my_query->have_posts()) : while ($my_query->have_posts()) : $my_query->the_post();
?>
 
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
 
<?php endwhile; endif; wp_reset_postdata(); ?>

こちらで受付可能な人の一覧が表示されました。

こちらのサイトが大変参考になりました。
ありがとうございます

セレクトボックスの値をクラスに設定するとCSSで表示を変えられて便利

もう一つ今回覚えたやつ。

セレクトボックスの値をclassに設定して表示の見た目を変える。

<?php
// フィールド名statusを取得
$status = get_field('status');
// Selectフィールドの値を取得
$statusValue = $status['value'];
// Selectフィールドのラベルを取得
$statusLabel = $status['label'];
?>
<p class="<?php echo $statusValue; ?>"><?php echo $statusLabel; ?></p>

これで出力されるのが

<p class="free">受付可能</p>

になります。

色々と使えて便利そう。また使ってみたいな。

スポンサーリンク

この記事が気に入ったら
いいね または フォローしてね!

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

コメント

コメントする

もくじ