[活用例あり!] WordPressのカスタムフィールドでの複合検索

記事
IT・テクノロジー
[2024/06/01 活用例を追加しました!]

こんにちは〜!
WordPressをカスタマイズしていると、カスタムフィールドでループ条件を変更したいことがよくあります。

カスタムフィールドで検索条件を指定するために
meta_queryの基本的な指定は以下のように行います!

```PHP
$meta_query = array(
    array(
         'key' => 'custom_key',
         'value' => '123'
    )
);
```
これで、カスタムフィールド「custom_key」が123のものだけが
表示されるように絞り込みできます。

より現実的なユースケースを見ていきましょう!

phpに不安のある方やおまかせしたい方はこちら↓

具体例: イベント投稿の表示

初めのケースとして、特定の日付が指定されていないイベント投稿を最初に表示し、次に日付が指定されているイベント投稿を並べ替える例を見てみましょう。
その後、特定のカスタムフィールドがないものだけと条件を追加してみます。

順番を2つに分けて並び替える

まず、日付が存在しない投稿と存在する投稿の両方を表示する基本のmeta_queryを設定します。

```php
$meta_query = array(
    'relation' => 'OR',
    array(
        'key' => 'event_date',
        'compare' => 'NOT EXISTS'
    ),
    array(
        'key' => 'event_date',
        'compare' => 'EXISTS'
    )
);
```

さらに指定したカスタムフィールドがある投稿を除外

次に、これに加えて、特定のフラグ(例: expired_checkフィールド)の値が「1」ではない投稿を含める条件を追加します。

```php
$meta_query = array(
    'relation' => 'AND',
    array(
        'relation' => 'OR',
        array(
            'key' => 'event_date',
            'compare' => 'NOT EXISTS'
        ),
        array(
            'key' => 'event_date',
            'compare' => 'EXISTS'
        )
    ),
    array(
        'key' => 'expired_check',
        'value' => '1',
        'compare' => '!='
    )
);
```

以上で、日付のない投稿、ある投稿の順番の並び替えをしつつ、
expired_checkが入っていないものだけを表示するという複数条件の表示ができました!

コピペ、改変OK! meta_queryのより実践的な活用例


ここから先はmeta_queryを利用して、以下のようなすぐに使用することが可能な実践的な活用方法をご紹介します。
ブログやECサイト、会員制サイトなどでは、ほぼ当たり前にニーズのある内容です。
もちろんコピペ、改変して利用頂いて問題ございません。

1. 特定の価格範囲に基づいた商品フィルタリング

2. 公開日とカスタムフィールドの組み合わせ検索

3. ユーザーレビューの平均評価での絞り込み

4. 会員ステータスによる絞り込み

5. 商品の在庫ステータスでのフィルタリング
この続きは購入すると読めるようになります。
残り:2,123文字
[活用例あり!] WordPress... 記事
IT・テクノロジー
1,000円(税抜)
サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す