Beiträge nach benutzerdefinierter Taxonomie-ID abfragen

7

Ich habe einen benutzerdefinierten Beitragstyp namens portfoliound eine benutzerdefinierte Taxonomie namens build-type(als Kategorien)

Ich versuche, portfolioBeiträge nach build-typeID abzufragen , z. B. alle Portfolio-Beiträge in "Hotels" (id = 4 für diese Taxonomie).

// gets the ID from a custom field to show posts on a specific page   
$buildType = get_post_meta($post->ID, 'build_type_id', true);
// run query
query_posts(array( 
    'post_type' => 'portfolio',
    'showposts' => -1,
    'tax_query' => array(
        'taxonomy' => 'build-type',
        'terms' => $buildType,
        'field' => 'term_id'
    ),
    'orderby' => 'title',
    'order' => 'ASC'
));

Derzeit werden alle portfolio Posts aufgerufen und nicht nur die mit der build-typeID

Für 'field' => 'term_id'soll ich verwenden term_id, tag_ID, idoder etwas anderes?

Weiß jemand, wie man das zum Laufen bringt?

Danke im Voraus!

Mattberridge
quelle

Antworten:

12

Der Grund, warum dies nicht funktioniert, ist, dass 'tax_query' ein Array von Arrays sein muss (verwirrend, ich weiß).

...

'tax_query' => array(
    array(
        'taxonomy' => 'build-type',

...

Auf diese Weise können Sie einige verschiedene Regeln zusammenfassen.

Drew Gourley
quelle
Netter Drew. Das hat es gelöst. Veröffentlichte das endgültige Skript auf Github gist.github.com/1275191
mattberridge
Prost! Verbrachte Stunde vom Kundenbudget zur Lösung dieses kleinen Problems :)
Tom
7

Drew hatte recht, tax-querymuss eine Reihe von Arrays sein

Die endgültige Lösung ist:

// gets the ID from a custom field to show posts on a specific page
$buildType = get_post_meta($post->ID, 'build_type_id', true);
// run query
query_posts(array( 
    'post_type' => 'portfolio',
    'showposts' => -1,
    'tax_query' => array(
        array(
            'taxonomy' => 'build-type',
            'terms' => $buildType,
            'field' => 'term_id',
        )
    ),
    'orderby' => 'title',
    'order' => 'ASC' )
);

Auf Github hier:

https://gist.github.com/1275191

Vielen Dank!

Mattberridge
quelle
Meine Antwort nicht zu akzeptieren und deine eigene zu akzeptieren, tut dem Mann wirklich weh ... tut mir in meinem Herzen weh. Wenn mich jemand braucht, bin ich in der Lounge.
Drew Gourley
Hah sorry Alter. Ich bin neu in all dem und wusste nicht, dass du nur eine Antwort haben kannst. Ich werde es neu markieren, damit Sie sich wieder aus der Lounge
wagen können
Haha Mann, es ist in Ordnung, ich habe nur Spaß gemacht - Wenn du eine Antwort selbst akzeptieren willst, ist das völlig erlaubt, aber sei sicher, meine Antwort zu verbessern, damit ich wenigstens irgendwann eine Liebe bekomme.
Drew Gourley
0

Sie müssen in tax_query ein Array erstellen, in dem Sie auch Operatoren auswählen können. Zum Beispiel sollte ein print_r von tax_query so aussehen.

 Array
(
    [relation] => AND
    [0] => Array
        (
            [taxonomy] => build-type
            [terms] => Array
                (
                    [0] => term1
                    [1] => term2blabla
                )

            [field] => slug
            [operator] => IN
        )

    [1] => Array
        (
            [taxonomy] => another-taxonomie
            [terms] => Array
                (
                    [0] => term1
                    [1] => term2
                )

            [field] => slug
            [operator] => IN
        )

)

Natürlich können Sie das Feld für id ändern, aber ich habe immer Slugs verwendet, um es einfacher zu halten. Wie Sie sehen, können Sie mehrere Taxonomien wie diese abfragen.

chifliiiii
quelle
-1

Sie müssen die tax_query nicht verwenden, entfernen und Folgendes anhängen:

term=>build-type,'build-type=>hotels' zum Beispiel.

wdalhaj
quelle