it-swarm.com.de

Wie wähle ich Posts aus mehreren Kategorien und Metawerten aus?

Ich muss Posts auswählen, die mehreren Kategorien angehören und über einen bestimmten Post-Metawert verfügen. Ich kann mit mehrere Kategorien auswählen

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

Aber auch ich muss aus diesen ausgewählten Kategorien nur die Beiträge auswählen, die einen bestimmten meta_value aus der wp_postmeta-Tabelle haben. Diese Aufgabe kann ich mit SQL-Abfrage tun:

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

Ich verstehe nicht, wie ich zum Beispiel nur die Posts auswählen kann, die die Kategorie 1 UND 2 UND 3 haben UND die Postmeta-Metaschlüssellänge zwischen $ min_length und $ max_length liegt.

1
phpdew

Seit Version 3.1 wurde die Abfrage von benutzerdefinierten Feldern in WP erheblich verbessert. Wenn ich den Code richtig verstanden habe, sollte Ihre Anfrage ungefähr so ​​aussehen:

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',
        ),
    ),
));

Sehen:

1
Rarst