Taxonomía personalizada con tax_query

2 ago 2013, 02:30:32
Vistas: 19.9K
Votos: 0

He creado un tipo de taxonomía personalizada con un plugin (CMS Press) y ahora estoy tratando de obtener todas las entradas con los términos de taxonomía en esa taxonomía.

Mi get_posts se ve así:

$args = Array( 
    'numberposts' => 5, 
    'offset' => 0,
    'post_status' => 'publish',
    'content-type' => 'my-term'
);

get_posts($args);

También he probado:

$args = Array( 
    'numberposts' => 5, 
    'offset' => 0,
    'post_status' => 'publish',
    'tax_query' => Array( Array ( 
        'taxonomy' => 'content-type' 
        'field' => 'slug' 
        'terms' => 'my-term' 
    ));

get_posts($args);

Esto funciona bien cuando no estoy usando una taxonomía personalizada. Si cambio mi consulta a:

$args = Array( 
    'numberposts' => 5, 
    'offset' => 0,
    'post_status' => 'publish',
    'tax_query' => Array( Array ( 
        'taxonomy' => 'post_tags' 
        'field' => 'slug' 
        'terms' => 'some-tag' 
    ));

get_posts($args);

funciona.

Me preguntaba si hay algo que estoy omitiendo que está impidiendo que se consulten las taxonomías personalizadas. Cualquier ayuda sería apreciada.

4
Comentarios

Hola Matt, no estoy familiarizado con la versión de llenar un arreglo que muestras aquí. Todos los métodos que he visto usan una sintaxis como $args = array( 'numberposts' = -1, 'post_status' = 'publish' ); etc. Por si te ayuda. Puedes llenar un arreglo $arg['numberposts'] = -1 pero de nuevo eso es diferente a lo que muestras. Mira php.net para más información.

Jon Jon
2 ago 2013 03:16:45

primero, asumo que en realidad estás llamando a get_posts (plural) y que get_post es solo un error tipográfico, también post_tags (la taxonomía incorporada es singular, post_tag). Para efectos de depuración sugiero usar WP_Query en lugar de get_posts, así puedes hacer var_dump al objeto de consulta para ver la consulta real que se está generando y enviando a la base de datos.

Milo Milo
2 ago 2013 03:44:36

Lo siento, estaba formateando basado en alguna salida de depuración. Aseguro que en el código real estoy usando la sintaxis de arreglo (y get_posts) correctamente. Lo editaré para reflejar eso.

Matt Dunnam Matt Dunnam
2 ago 2013 03:50:24

Normalmente debería funcionar... Por si acaso, la taxonomía personalizada se aplica a posts normales, ¿verdad?

Gioia Fueter Gioia Fueter
26 jun 2014 00:43:10
Todas las respuestas a la pregunta 2
2

Desde el Codex de WordPress para wp_query:

Mostrar publicaciones etiquetadas con bob, bajo la taxonomía personalizada 'people':

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

Mostrar publicaciones etiquetadas con bob, bajo la taxonomía personalizada 'people', usando tax_query:

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

Ver la página del Codex para más ejemplos.

2 ago 2013 03:35:00
Comentarios

Esto es lo que hemos intentado. No ha funcionado (por favor, mira arriba).

Matt Dunnam Matt Dunnam
2 ago 2013 04:37:28

Para mí esto funciona.

herrfischer herrfischer
22 nov 2016 19:55:44
0

La causa más probable de este problema es el uso de guiones (-) en el nombre de tu taxonomía personalizada. Los guiones son extremadamente problemáticos cuando se usan en nombres de taxonomías personalizadas, por lo que como regla general deben evitarse a toda costa.

Si necesitas separar nombres en una taxonomía personalizada, o incluso en un tipo de entrada personalizado, debes usar únicamente guiones bajos (_). También evita el uso de camelCase, números como primer carácter y cualquier tipo de caracteres especiales.

9 sept 2014 16:10:55