Cómo obtener las entradas de un término de taxonomía personalizada

29 jun 2015, 21:45:38
Vistas: 20.3K
Votos: 9

Espero que alguien pueda ayudarme:

Tengo un Tipo de Entrada Personalizada (Película) con su taxonomía personalizada (Productor), esta taxonomía tiene sus propios términos, por ejemplo 'WarnerBros'.

¿Cómo puedo obtener todas las entradas de mi término (WarnerBros)?

Tengo esto pero aún no funciona.

$args = array(
   'post_type' => 'movie',
    'tax_query' => array(
        array(
            'taxonomy' => 'producer',
            'field'    => 'slug',
            'terms'    => 'WarnerBros',
        ),
    ),
);
$query = new WP_Query( $args );

Después de jugar con el código resolví el problema, compartiré mi código para alguien con el mismo problema:

$type = 'Movie';  // Nombre del Tipo de Entrada Personalizada
$tag =  'WarnerBros'; // Tu Término

$args = array( 'post_type' => $type, 'paged' => $paged, 'posts_per_page' => -1, 'orderby' => 'menu_order', 'order' => 'ASC', 'tax_query'=>array( array( 'taxonomy'=>'Producer', //Nombre de la Taxonomía 'field'=>'slug', 'terms'=>array($tag) )) );

$loop = new WP_Query( $args ); while ( $loop->have_posts() ) : $loop->the_post(); if(is_object_in_term($post->ID,'Taxonomy_Name','Your_Term')) // Productor y WarnerBros {

echo '<div id="YourID">'; echo the_title(); echo '</div>'; } endwhile;

3
Comentarios

He estado intentando con muchos ejemplos pero nada funciona.

Ebenizer Pinedo Ebenizer Pinedo
29 jun 2015 22:19:44

Por favor no publiques bloques de código en los comentarios, en su lugar haz clic en "editar" en tu pregunta y luego haz clic en {} para ingresar tu código de manera formateada. ¡Esto facilita que los usuarios vean lo que has intentado y quizás puedan modificarlo para solucionar tu problema!

Howdy_McGee Howdy_McGee
29 jun 2015 22:21:39

Lo siento, ahora está arreglado ;)

Ebenizer Pinedo Ebenizer Pinedo
29 jun 2015 22:25:30
Todas las respuestas a la pregunta 3
2

Esta pregunta tiene diferentes respuestas en este caso específico de WordPress, que pueden ser de ayuda:

Mostrar todas las entradas de un tipo de publicación personalizado, agrupadas por una taxonomía personalizada

Personalmente utilicé este método que funcionó bien para mí:

$terms = get_terms('tax_name');
$posts = array();
foreach ( $terms as $term ) {
    $posts[$term->name] = get_posts(array( 'posts_per_page' => -1, 'post_type' => 'post_type', 'tax_name' => $term->name ));
}

Adaptándolo a tu escenario, esto debería funcionar:

$terms = get_terms('producer');
$posts = array();
foreach ( $terms as $term ) {
    $posts[$term->name] = get_posts(array( 'posts_per_page' => -1, 'post_type' => 'movie', 'tax_name' => $term->name ));
}

Ahora puedes obtener tus publicaciones:

print_r($posts["WarnerBros"]);
29 jun 2015 22:30:37
Comentarios

No funciona para mí, quizás porque el fragmento no tiene el nombre del término.

Ebenizer Pinedo Ebenizer Pinedo
29 jun 2015 23:03:54

He editado la respuesta para ajustarme a tus variables. No esperes demasiado que las respuestas tengan exactamente las mismas variables que tú.

marcovega marcovega
29 jun 2015 23:07:44
1

Prueba así

$args = array(
    'post_type' => 'movie',
    'tax_query' => array(
        array(
            'taxonomy' => 'producer',
            'field'    => 'slug',
            'terms'    => 'WarnerBros',
        ),
    ),
);
$query = new WP_Query( $args );

Ver más en WordPress Codex

29 jun 2015 22:01:11
Comentarios

Parece que no funciona, ¿debería usar mi slug de término? ¿O quizás llamar a otra función como: <?php (have_posts()) : the_post(); ?>

Ebenizer Pinedo Ebenizer Pinedo
29 jun 2015 22:18:17
0

Supongamos que tienes un tipo de entrada personalizado obras y bajo la taxonomía género quieres encontrar todas las entradas con la categoría comedia

$args = array(
        'post_type' => 'plays', /*Tipo de entrada (obras)*/
        'tax_query' => array(
            array(
                'taxonomy' => 'genre', /*Taxonomía a buscar (género)*/
                'field'    => 'slug',
                'terms'    => 'comedy', /*Buscar categoría para (comedia)*/
            ),
        ),
    );
    $query = new WP_Query( $args );
19 nov 2017 18:11:04