WordPressサイトを運営している際、時には特定のカスタムフィールドに値が入っていない記事を見つけたいことがあります。例えば、特定の情報が未入力の記事を特定して修正するために役立ちます。今回は、そのようなニーズに応えるために、WordPressのWP_Queryを使用してカスタムフィールドが空である記事を取得する方法を紹介します。
WP_Query を使用して記事を取得する
まず最初に、WP_Queryを使用して記事を取得する基本的なステップを行います。以下のサンプルコードでは、投稿タイプが「post」で、すべての投稿を取得しています。
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
);
$query = new WP_Query( $args );
meta_query を使用してカスタムフィールドが空である記事を取得する
次に、meta_queryパラメータを使用してカスタムフィールドが特定の値を持っていない記事を絞り込みます。以下のサンプルコードでは、custom_field_nameを実際のカスタムフィールドの名前に変更し、compareパラメータを「NOT EXISTS」に設定しています。
$args['meta_query'] = array(
array(
'key' => 'custom_field_name',
'compare' => 'NOT EXISTS',
),
);
$query = new WP_Query( $args );
結果を処理する
最後に、取得した記事を処理するためのコードを追加します。取得した記事があれば、その記事に対して必要な処理を行います。
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
// ここで記事に対する処理を行う
// the_title(), the_content(), などを使用
}
wp_reset_postdata();
} else {
// 該当する記事がない場合の処理
}
最終的なコード
<?php
// WP_Queryを使用して記事を取得
$args = array(
'post_type' => 'post',
'posts_per_page' => -1,
'meta_query' => array(
array(
'key' => 'custom_field_name',
'compare' => 'NOT EXISTS',
),
),
);
$query = new WP_Query( $args );
// 取得した記事を処理
if ( $query->have_posts() ) {
while ( $query->have_posts() ) {
$query->the_post();
// ここで記事に対する処理を行う
// the_title(), the_content(), などを使用
}
wp_reset_postdata();
} else {
// 該当する記事がない場合の処理
echo '該当する記事はありません。';
}
?>
このコードでは、custom_field_name の部分を実際のカスタムフィールドの名前に変更してください。また、取得した記事に対する処理部分には、具体的な操作や表示内容を追加してください。
まとめ
これで、カスタムフィールドに値が入っていない記事を取得するための基本的なスクリプトが完成しました。必要に応じて、これをテーマのテンプレートファイルやプラグインに組み込み、サイト管理をスムーズに行いましょう。