web-dev-qa-db-ja.com

複数のカテゴリとメタ値から投稿を選択する方法

複数のカテゴリに属し、特定の投稿メタ値を持つ投稿を選択する必要があります。複数のカテゴリを選択できます

query_posts( array( 'category__and' => array(1,2,3) ) );

しかしまた私はそれらの選択されたカテゴリから必要とし、wp_postmetaテーブルから特定のmeta_valueを持つそれらの投稿だけを選択します。私はSQLクエリで行うことができますこのタスク:

SELECT DISTINCT (
p.ID
), p . *
FROM wp_posts AS p
INNER JOIN wp_postmeta AS p1 ON ( p.ID = p1.post_id )
CROSS JOIN wp_postmeta AS p3
USING ( post_id )
WHERE p3.meta_key = 'length'
AND convert( p3.meta_value, signed )
BETWEEN '".$min_length."'
AND '".$max_length."'
AND post_status = 'publish'
$subSelect
ORDER BY p.ID DESC

たとえば、カテゴリ1 AND 2 AND 3 AND postmeta meta_keyの長さがBETWEEN $ min_length AND $ max_lengthである投稿だけを選択する方法がわかりません。

1
phpdew

バージョン3.1以降、WPではカスタムフィールドのクエリが大幅に強化されました。私が正しいコードを手に入れたならば、あなたの質問はこのようなものであるべきです:

query_posts(array(
    'category__and' => array(1,2,3),
    'meta_query' => array(
        array(
            'key' => 'length',
            'value' => array($min_length, $max_length),
            'compare' => 'BETWEEN',
            'type' => 'NUMERIC',
        ),
    ),
));

見る:

1
Rarst