こんにちは!コーダーのゆうしです。
WordPressで「新製品だけ一覧に表示したい」「おすすめフラグが立っている投稿だけ出したい」という場面、ACFの真/偽フィールドを使うとスッキリ実装できます。この記事ではWP_Queryと組み合わせてチェックが入っている投稿のみ出力する方法を解説します。
Advanced Custom Fields(ACF)をインストールしよう
WP管理画面「プラグイン」→「新規プラグインを追加」で「ACF」と検索すると一番上に表示されます。「今すぐインストール」→「有効化」で使えるようになります。
プラグイン公式ページからのダウンロードはこちら→ Advanced Custom Fields
※ 2024年末ごろからACFは「Secure Custom Fields(SCF)」に名称が変更されています。機能面は変わらないので、SCFと表示されていても同じように使用できます。

↑ こちらです。
真/偽フィールドの設定方法
ACF(SCF)の管理画面でフィールドグループを作成し、フィールドタイプに「真/偽」を選択します。今回はフィールド名を switch として設定した例で解説します。
管理画面の投稿編集画面にチェックボックスが追加されるので、表示させたい投稿にチェックを入れていく運用イメージです。

チェックが入っている投稿のみ出力する
以下実装コードです
<?php
$paged = get_query_var('paged');
$arg = array(
'post_type' => 'post',
'posts_per_page' => 10,
'paged' => $paged,
'meta_query' => array(
array(
'key' => 'switch', // ACFで設定したフィールド名
'value' => '1', // 1 = チェックあり(true)
),
),
);
$my_query = new WP_Query($arg);
if ( $my_query->have_posts() ) :
while ( $my_query->have_posts() ) : $my_query->the_post();
?>
<!-- 投稿の中身をここに書く -->
<?php
endwhile;
else :
?>
<p>まだ投稿がありません。</p>
<?php endif; ?>コード解説
ポイントになるのは meta_query の部分です。
'meta_query' => array(
array(
'key' => 'switch', // ACFで設定したフィールド名
'value' => '1', // 1 = チェックあり(true)
),
),| パラメータ | 内容 |
|---|---|
| key | ACFで設定したフィールド名。今回は switch |
| value | '1' がチェックあり(true)、'0' がチェックなし(false) |
post_type や posts_per_page はサイトの仕様に合わせて変更してください。カスタム投稿タイプを使っている場合は post_type をそのスラッグに変更します。
応用:チェックなしの投稿だけ出力する
チェックが入っていない投稿のみを出力したい場合は value を '0' に変更するだけです。
'value' => '0', // 0 = チェックなし(false)「通常は全投稿を表示、特定フラグが立ったものだけ非表示にする」という使い方もできます。
躓きやすいポイント
投稿が一件も表示されない
ACFで設定したフィールド名と key の値が一致していない場合、投稿が出力されません。フィールド名は大文字・小文字・アンダースコアも含めて完全一致している必要があります。管理画面のフィールド設定を再確認してみてください。
古い投稿にチェックが反映されない
真/偽フィールドは、フィールド作成後に既存の投稿を一度開いて保存しないとデータが書き込まれない場合があります。古い投稿が出力されないときは、対象の投稿を開いて一度更新してみてください。
まとめ
ACF(SCF)の真/偽フィールドとWP_Queryを組み合わせると、チェックの有無で投稿の表示・非表示を柔軟にコントロールできます。「新着フラグ」「おすすめフラグ」「非表示フラグ」など、運用側が簡単に切り替えられる仕組みを作るときに重宝するので、ぜひ活用してみてください。
ご不明な点やコーディングのご依頼はお問い合わせからお気軽にどうぞ。

