get_meta_sql()


WordPressのget_meta_sql()関数は、メタクエリを生成するために使用される関数です。この関数は、WP_Queryや他のカスタムクエリでメタデータをフィルタリングする際に役立ちます。

構文

get_meta_sql( array $meta_query, string $type, string $primary_table, string $primary_id_column, object $context = null );

引数の説明:

  • $meta_query(array) — メタクエリの条件を指定する配列。
  • $type(string) — クエリのタイプを指定します。通常は’post’や’user’など。
  • $primary_table(string) — メインテーブルの名前。
  • $primary_id_column(string) — メインテーブルのIDカラム名。
  • $context(object) — クエリのコンテキストを指定するオブジェクト。省略可能。

例1: 基本的なメタクエリの生成

この例では、特定のメタキーと値を持つ投稿を検索するためのメタクエリを生成します。

$meta_query = array(array('key' => 'color', 'value' => 'blue', 'compare' => '=')); $sql = get_meta_sql($meta_query, 'post', $wpdb->posts, 'ID'); echo $sql['join'] . $sql['where'];

例2: 複数のメタ条件を使用する

複数のメタ条件を組み合わせてクエリを生成します。

$meta_query = array('relation' => 'AND', array('key' => 'color', 'value' => 'blue', 'compare' => '='), array('key' => 'size', 'value' => 'large', 'compare' => '=')); $sql = get_meta_sql($meta_query, 'post', $wpdb->posts, 'ID'); echo $sql['join'] . $sql['where'];

例3: ユーザーメタデータのクエリ

ユーザーメタデータに対してクエリを生成します。

$meta_query = array(array('key' => 'age', 'value' => '30', 'compare' => '>=')); $sql = get_meta_sql($meta_query, 'user', $wpdb->users, 'ID'); echo $sql['join'] . $sql['where'];

例4: カスタムテーブルでのメタクエリ

カスタムテーブルに対してメタクエリを生成します。

$meta_query = array(array('key' => 'status', 'value' => 'active', 'compare' => '=')); $sql = get_meta_sql($meta_query, 'custom', 'custom_table', 'custom_id'); echo $sql['join'] . $sql['where'];

例5: メタクエリのリレーションを指定

メタクエリのリレーションを指定して複雑なクエリを生成します。

$meta_query = array('relation' => 'OR', array('key' => 'color', 'value' => 'red', 'compare' => '='), array('key' => 'color', 'value' => 'blue', 'compare' => '=')); $sql = get_meta_sql($meta_query, 'post', $wpdb->posts, 'ID'); echo $sql['join'] . $sql['where'];

例6: メタクエリの比較演算子を変更

比較演算子を変更してメタクエリを生成します。

$meta_query = array(array('key' => 'price', 'value' => '100', 'compare' => '>=')); $sql = get_meta_sql($meta_query, 'post', $wpdb->posts, 'ID'); echo $sql['join'] . $sql['where'];

例7: メタクエリのタイプを指定

メタクエリのタイプを指定してクエリを生成します。

$meta_query = array(array('key' => 'rating', 'value' => '5', 'compare' => '=', 'type' => 'NUMERIC')); $sql = get_meta_sql($meta_query, 'post', $wpdb->posts, 'ID'); echo $sql['join'] . $sql['where'];

例8: メタクエリのコンテキストを指定

コンテキストを指定してメタクエリを生成します。

$meta_query = array(array('key' => 'status', 'value' => 'active', 'compare' => '=')); $context = new WP_Query(); $sql = get_meta_sql($meta_query, 'post', $wpdb->posts, 'ID', $context); echo $sql['join'] . $sql['where'];

注意点

  • メタクエリの条件が複雑になる場合、パフォーマンスに影響を与える可能性があります。
  • カスタムテーブルを使用する場合、テーブル名とカラム名を正確に指定する必要があります。

関連機能: