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

18

¿Hay alguna manera de que pueda enumerar todas las publicaciones en un tipo de publicación personalizada específica y organizarlas según el término de taxonomía personalizada adjunto a ellas?

Por ejemplo;

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

Término de taxonomía n.º 2
Tipo de mensaje
Tipo de publicación

Cualquier ayuda sería muy apreciada.

Gracias.

    
pregunta Dean Elliott 25.09.2012 - 16:24

4 respuestas

42

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 recorramos y activamos un enlace de título a cada publicación que pertenezca a ese término. Si necesita reordenar los términos de la taxonomía, puede hacerlo con un complemento con bastante facilidad. Reorganizar la taxonomía , creo. Pero preste atención a que este complemento agregue (!) otra columna a su tabla sobre activación y no la elimine al desactivarse !

    
respondido por el GhostToast 25.09.2012 - 18:10
1

No es una solución especialmente elegante, pero puede crear varias consultas para los términos específicos y luego generarlas. Es de esperar que alguien pueda encontrar una forma mejor 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;
}
    
respondido por el theMojoWill 25.09.2012 - 17:55
0

¡Bonito! La solución de GhostOne era 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 'tipos de accidente' que tenían varios términos debajo. Mi idea fue crear un widget personalizado para mostrar la lista de publicaciones bajo los términos de estas taxonomías personalizadas. En mi carrera de prueba consiguió 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.

    
respondido por el Niraj Kumar 10.07.2014 - 14:16
-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 lista
  • elemento de lista
  • elemento de lista
respondido por el wpdevramki 29.07.2014 - 07:58

Lea otras preguntas en las etiquetas