Taxonomie personalizată cu tax_query

2 aug. 2013, 02:30:32
Vizualizări: 19.9K
Voturi: 0

Am creat un tip de taxonomie personalizată cu un plugin (CMS Press) și acum încerc să obțin toate articolele cu termenii taxonomiei din acea taxonomie.

Funcția mea get_posts arată astfel:

$args = Array( 
    'numberposts' => 5, // numărul de postări
    'offset' => 0,
    'post_status' => 'publish',
    'content-type' => 'my-term'
);

get_posts($args);

Am încercat și această variantă:

$args = Array( 
    'numberposts' => 5, // numărul de postări
    'offset' => 0,
    'post_status' => 'publish',
    'tax_query' => Array( Array ( 
        'taxonomy' => 'content-type' 
        'field' => 'slug' 
        'terms' => 'my-term' 
    ));

get_posts($args);

Acest cod funcționează bine când nu folosesc o taxonomie personalizată. Dacă îmi modific cererea la:

$args = Array( 
    'numberposts' => 5, // numărul de postări
    'offset' => 0,
    'post_status' => 'publish',
    'tax_query' => Array( Array ( 
        'taxonomy' => 'post_tags' 
        'field' => 'slug' 
        'terms' => 'some-tag' 
    ));

get_posts($args);

funcționează.

Mă întrebam dacă am omis ceva care împiedică interogarea taxonomiilor personalizate. Orice ajutor ar fi apreciat.

4
Comentarii

Hei Matt, nu sunt familiarizat cu versiunea de umplere a unui array pe care o arăți aici. Toate metodele pe care le-am văzut folosesc sintaxa precum $args = array( 'numberposts' = -1, 'post_status' = 'publish' ); etc. Dacă te ajută. Poți umple un array $arg['numberposts'] = -1 dar din nou, asta e diferit față de ce arăți tu. Vezi php.net pentru mai multe detalii.

Jon Jon
2 aug. 2013 03:16:45

În primul rând, presupun că de fapt apelezi get_posts (la plural) și get_post este doar o greșeală de scriere, de asemenea post_tags (taxonomia built-in este la singular, post_tag). Pentru depanare, sugerez să folosești WP_Query în loc de get_posts, apoi poți folosi var_dump pe obiectul query pentru a vedea interogarea reală generată și trimisă la baza de date.

Milo Milo
2 aug. 2013 03:44:36

Scuze, am formatat bazându-mă pe unele rezultate de depanare. Să știi că în codul actual folosesc sintaxa array (și get_posts) corect. Voi edita pentru a reflecta asta.

Matt Dunnam Matt Dunnam
2 aug. 2013 03:50:24

În mod normal ar trebui să funcționeze... Doar pentru siguranță, taxonomia personalizată este aplicată postărilor normale, corect?

Gioia Fueter Gioia Fueter
26 iun. 2014 00:43:10
Toate răspunsurile la întrebare 2
2

Din WordPress codex pentru wp_query:

Afișează articolele etichetate cu bob, sub taxonomia personalizată 'people':

$args = array(
    'post_type' => 'post',
    'people' => 'bob'
);
$query = new WP_Query( $args );

Afișează articolele etichetate cu bob, sub taxonomia personalizată 'people', folosind tax_query:

$args = array(
    'post_type' => 'post',
    'tax_query' => array(
        array(
            'taxonomy' => 'people',
            'field' => 'slug',
            'terms' => 'bob'
        )
    )
);
$query = new WP_Query( $args );

Vezi pagina Codex pentru mai multe exemple.

2 aug. 2013 03:35:00
Comentarii

Acesta este ceea ce am încercat. Nu a funcționat (te rog să vezi mai sus).

Matt Dunnam Matt Dunnam
2 aug. 2013 04:37:28

Pentru mine funcționează.

herrfischer herrfischer
22 nov. 2016 19:55:44
0

Cea mai probabilă cauză a acestei probleme este utilizarea cratimelor (-) în denumirea taxonomiei personalizate. Cratimele sunt extrem de problematice atunci când sunt folosite în denumirile taxonomiilor personalizate, așa că, conform regulilor, ar trebui evitate cu orice preț.

Dacă trebuie să separați denumirile într-o taxonomie personalizată sau chiar într-un tip de postare personalizată, ar trebui să folosiți numai underscore-uri (_). De asemenea, evitați utilizarea camelCase, a numerelor ca prim caracter și a oricăror tipuri de caractere speciale.

9 sept. 2014 16:10:55