Listar todas las publicaciones en tipo de publicación personalizada por taxonomía

25

¿Hay alguna manera de enumerar todas las publicaciones en un tipo de publicación personalizado específico y organizarlas por el término de taxonomía personalizado adjunto a ellas?

Por ejemplo;

Taxonmy Term # 1
Tipo de
publicación Tipo de
publicación Tipo de publicación

Término de taxonomía # 2
Tipo de
publicación Tipo de publicación

Cualquier ayuda sería muy apreciada.

Gracias.

Dean Elliott
fuente

Respuestas:

52

Prueba esto

$custom_terms = get_terms('custom_taxonomy');

foreach($custom_terms as $custom_term) {
    wp_reset_query();
    $args = array('post_type' => 'custom_post_type',
        'tax_query' => array(
            array(
                'taxonomy' => 'custom_taxonomy',
                'field' => 'slug',
                'terms' => $custom_term->slug,
            ),
        ),
     );

     $loop = new WP_Query($args);
     if($loop->have_posts()) {
        echo '<h2>'.$custom_term->name.'</h2>';

        while($loop->have_posts()) : $loop->the_post();
            echo '<a href="'.get_permalink().'">'.get_the_title().'</a><br>';
        endwhile;
     }
}

Obtenemos todos los términos de una taxonomía, los recorremos y activamos un enlace de título a cada publicación que pertenece a ese término. Si necesita reordenar los términos de taxonomía, puede hacerlo con un complemento con bastante facilidad. Reordenar taxonomía , creo. ¡Pero tenga en cuenta que este complemento agrega (!) Otra columna a su tabla en la activación y no la elimina al desactivarla !

Tostada fantasma
fuente
Hola @GhostToast Esto funciona muy bien, tengo una pregunta directa, ¿cómo puedo filtrar esto por taxonomía, tengo tenis, golf, fútbol, ​​voleyball, estos códigos los trae a todos con su publicación que tiene la taxonomía marcada, ¿Cómo puedo filtrar a solo muestra la Taxonomía del fútbol con sus publicaciones.
Rodrigo Zuluaga
@RodrigoZuluaga esa sería una consulta única básica entonces. quita $custom_termsy foreach()simplemente define 'terms'manualmente la babosa o lo que quieras.
GhostToast
Creo que es un poco diferente, pero su código es muy bueno $ args = array ('post_type' => 'publica', 'tax_query' => array (array ('taxonomy' => 'comision-publicaciones', 'field' = > 'nombre', 'términos' => matriz ($ ter_name)),),);
Rodrigo Zuluaga
1

No es una solución particularmente elegante, pero puede crear múltiples consultas para los términos específicos y luego generarlos. Esperemos que alguien pueda encontrar una forma más agradable de extraer automáticamente los términos para modificar la salida / clasificación. Pero esto te pondría en marcha.

<?php

//First Query for Posts matching term1
$args = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'taxonomy_1',
            'field' => 'slug',
            'terms' => array( 'term1' )
        ),
    ),
    'post_type' => 'my-post-type'
);
$query = new WP_Query( $args );

if ( have_posts() ) {

    $term = $query->queried_object;

    echo 'All posts found in ' . $term->name;

    while ( have_posts() ) : the_post();
        //Output what you want
        the_title();
        the_content();
    endwhile;
}

//RESET YOUR QUERY VARS
wp_reset_query();

//Second Query for term2
$args = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'taxonomy_1',
            'field' => 'slug',
            'terms' => array( 'term2' )
        ),
    ),
    'post_type' => 'my-post-type'
);
$query = new WP_Query( $args );

if ( have_posts() ) {

    $term = $query->queried_object;

    echo 'All posts found in ' . $term->name;

    while ( have_posts() ) : the_post();
        //Output what you want
        the_title();
        the_content();
    endwhile;
}
theMojoWill
fuente
0

¡Buena esa! La solución de GhostOne fue lo que había estado buscando. En mi situación, el tipo de publicación personalizada era 'minining_accidents' y las taxonomías personalizadas asociadas con esto eran 'accidentes-tipos' que tenían varios términos debajo. Mi idea era crear un widget personalizado para mostrar la lista de publicaciones en términos de estas taxonomías personalizadas. En mi prueba, obtuve lo que quería. El descanso fue arreglado. Aquí está mi código:

function fn_get_list_of_mining_accident_types()
{
    $custom_taxonomy='accident-types';  
    $custom_terms = get_terms($custom_taxonomy);    
    $str_return='<ul>';
    foreach($custom_terms as $custom_term) 
    {
        wp_reset_query();
        $args = array(
            'post_type' => 'minining_accidents',
            'tax_query' => array(               
                array(
                    'taxonomy' => $custom_taxonomy,
                    'field' => 'slug',
                    'terms' => $custom_term->slug,
                ),
            ),
        );  

        $loop = new WP_Query($args);

        $term_name=$custom_term->name;
        $term_slug=$custom_term->slug;
        $term_link=get_term_link($term_slug, $custom_taxonomy);

        $str_return.='<li><a href="'.$term_link.'">'.$term_name.'</a>';

        if($loop->have_posts()) 
        {
            $str_return.='<ol>';

            while($loop->have_posts()) : $loop->the_post();
                $str_return.='<li><a href="'.get_permalink().'">'.get_the_title().'</a></li> ';
            endwhile;

            $str_return.='</ol>';           
         }
         $str_return.='</li>';
    }
    $str_return.='</ul>';
    return $str_return;
}

¡Sí! Siempre hay una opción para mejorar aún más el código.

Niraj Kumar
fuente
-1

Para mostrar una lista de publicaciones personalizadas de una taxonomía personalizada

$args = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'your-custom-taxonomy',
            'field' => 'slug',
            'terms' => array( 'your-term' )
        ),
    ),
    'post_type' => 'your-post-type'
);
$loop = new WP_Query($args);
     if($loop->have_posts()) {
    $term = $wp_query->queried_object;
     while($loop->have_posts()) : $loop->the_post();
        //Output what you want      
   echo '<li><a href="'.get_permalink().'">'.get_the_title().'</a></li>';
      endwhile;
}

Título

  • Elemento de la lista
  • Elemento de la lista
  • Elemento de la lista
wpdevramki
fuente