WordPress カスタムフィールドの値が入力されている且つ指定カテゴリに属している投稿の場合のみ表示する方法

カスタムフィールドに入力された値と指定したカテゴリに紐づいているかどうかを条件にデータ抽出&表示する方法のメモ。

ソースコード

<?php
$item_id = get_the_ID();
$delivery_method = get_field('info', $item_id);
?>
<?php if($delivery_method && in_category('assort')):?>
<?php
$cat_assort = get_category_by_slug("assort");
$cat_assort_id = $cat_assort->cat_ID;

$args = array(
    'post_type'      => array('post'),
    'posts_per_page' => -1,
    'paged'          => 1,
    'category__and'  => array($cat_assort_id),
    'post__not_in'   => array($item_id),
    'meta_query'     => array(   
        array(
            'key'     => 'info',
            'value'   => $delivery_method,
            'compare' => '='
        )
    )
);
  
$item_query = new WP_Query($args);
<?php endif;?>

解説

in_category() 投稿が指定カテゴリに属しているか判定

in_category()の第一引数にカテゴリのスラッグを指定して対象の投稿がカテゴリに属しているか判定出来ます。

<?php if(in_category('assort')):?>
<?php endif;?>

meta_query を使いカスタムフィールドの値で絞り込む

以下のコードでは、”info” というカスタムフィールドに入力された値を条件に絞り込んでいます。

    'meta_query'     => array(   
        array(
            'key'     => 'info',
            'value'   => $delivery_method,
            'compare' => '='
        )
    )

動作環境情報

エックスサーバー(x10)
PHP 7.3.14
MySQL 5.7
WordPress 5.3.2

コメント

タイトルとURLをコピーしました