wp_meta_query()


WordPressのwp_meta_query()は、投稿メタデータに基づいてクエリを実行するために使用される強力な機能です。この機能は、カスタムフィールドの条件に応じて投稿をフィルタリングする際に役立ちます。

構文

WP_Meta_Query::__construct( array $meta_query )

引数の説明

  • $meta_query (array) — クエリの条件を設定する配列。
  • key (string) — メタキーの名前。
  • value (mixed) — メタキーに関連付けられた値。
  • compare (string) — 比較演算子(例: =, !=, LIKE, NOT LIKEなど)。
  • type (string) — データ型(例: NUMERIC, CHAR)。

例1: 単一のメタクエリ

特定のメタキーと値に一致する投稿を取得します。

<?php
$args = array(
    'meta_query' => array(
        array(
            'key' => 'custom_key',
            'value' => 'custom_value',
            'compare' => '='
        ),
    ),
);
$query = new WP_Query( $args );
?>

例2: 複数のメタクエリ

複数の条件を使用して投稿をフィルタリングします。

<?php
$args = array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'key1',
            'value' => 'value1',
            'compare' => '='
        ),
        array(
            'key' => 'key2',
            'value' => 'value2',
            'compare' => '!='
        ),
    ),
);
$query = new WP_Query( $args );
?>

例3: 数値の比較

メタキーの数値データを使用してフィルタリングします。

<?php
$args = array(
    'meta_query' => array(
        array(
            'key' => 'price',
            'value' => 100,
            'type' => 'NUMERIC',
            'compare' => '>='
        ),
    ),
);
$query = new WP_Query( $args );
?>

例4: LIKE演算子を使用した検索

部分一致でメタデータを検索します。

<?php
$args = array(
    'meta_query' => array(
        array(
            'key' => 'description',
            'value' => 'sample',
            'compare' => 'LIKE'
        ),
    ),
);
$query = new WP_Query( $args );
?>

例5: ネストされた条件

条件をネストして複雑なクエリを実行します。

<?php
$args = array(
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'relation' => 'AND',
            array(
                'key' => 'key1',
                'value' => 'value1',
                'compare' => '='
            ),
            array(
                'key' => 'key2',
                'value' => 'value2',
                'compare' => '='
            ),
        ),
        array(
            'key' => 'key3',
            'value' => 'value3',
            'compare' => '!='
        ),
    ),
);
$query = new WP_Query( $args );
?>

注意事項

  • 条件の数が多い場合、パフォーマンスに影響を与える可能性があります。
  • 必ずSQLインジェクションを防ぐために、入力値を適切にサニタイズしてください。
  • 使用する比較演算子とデータ型を正確に指定してください。

関連機能: