3 Stimmen

query_posts nach zwei benutzerdefinierten Feldern filtern?

Ich versuche, meine Beiträge so zu filtern, dass nur diejenigen angezeigt werden, die einen benutzerdefinierten Wert für das Feld "Modell" haben, während ich die Beiträge nach einem anderen benutzerdefinierten Feld namens "Preis" sortiere.

Hier ist die Funktion, die ich verwende (funktioniert nicht):

<?php 
global $query_string;
query_posts( $query_string . "&meta_value=Model&orderby=meta_value&meta_key=Price&order=ASC"); 
?>

Diese Funktion zeigt nur Modelle an, sortiert die Beiträge aber nicht nach Preis. Wenn ich hinzufüge &meta_value=Model après order=ASC Es wird nach Preis sortiert, aber alle Beiträge werden angezeigt, nicht nur die Modelle.

9voto

Chris Punkte 648

Haben Sie sich angesehen http://codex.wordpress.org/Class_Reference/WP_Query

Speziell dieser Abschnitt:

Handhabung mehrerer benutzerdefinierter Felder:

Beiträge aus mehreren benutzerdefinierten Feldern anzeigen:

$args = array(
    'post_type' => 'product',
    'meta_query' => array(
        array(
            'key' => 'color',
            'value' => 'blue',
            'compare' => 'NOT LIKE'
        ),
        array(
            'key' => 'price',
            'value' => array( 20, 100 ),
            'type' => 'numeric',
            'compare' => 'BETWEEN'
        )
    )
 );
$query = new WP_Query( $args );

1voto

pete_schuster Punkte 227

Haben Sie es mit einem Array versucht?

$args = array(
  'meta_value' => array('Model','Price')
    );
    query_posts($args);

0voto

ChiCgi Punkte 725

Ich weiß, dass dies eine alte Frage ist, aber ich brauchte die Antwort heute und konnte sie nirgends finden. Ich habe die Frage gefunden und dann eine Antwort erstellt (siehe unten):

<?php
$sql = "
    SELECT ID, meta1.meta_value, meta2.meta_value from $wpdb->posts p
        JOIN $wpdb->postmeta meta1 ON meta1.post_id = p.ID
        JOIN $wpdb->postmeta meta2 ON meta2.post_id = p.ID
    WHERE p.post_status = 'publish'
    AND p.post_type = 'post'
    AND meta1.meta_key = 'Model'
    AND meta2.meta_key = 'Price'
    ORDER BY meta2.meta_value DESC
";
$posts_with_meta = $wpdb->get_col($sql);
$my_query = new WP_Query();
foreach ($posts_with_meta as $p) {
    $post = get_post(intval($p));
    setup_postdata($post);
    print_r($post);
}
?>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X