it-swarm.com.de

Fragen Sie Beiträge nach benutzerdefinierter Taxonomie-ID ab

Ich habe einen benutzerdefinierten Beitragstyp mit dem Namen portfolio und eine benutzerdefinierte Taxonomie mit dem Namen build-type (als Kategorien).

Ich versuche, portfolio Beiträge nach build-type ID abzufragen, z. 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 all portfolio Posts aufgerufen und nicht nur die mit der build-type ID

Soll ich für 'field' => 'term_id'term_id, tag_ID, id oder etwas anderes verwenden?

Weiß jemand, wie man das zum Laufen bringt?

Danke im Voraus!

7
mattberridge

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.

12
Drew Gourley

Drew hatte recht, tax-query muss ein Array 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!

7
mattberridge

Sie müssen ein Array in tax_query 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.

0
chifliiiii