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!

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.


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!


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.


-1

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

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.