Liste tous les articles en type d'article personnalisé par taxonomie

18

Existe-t-il un moyen de répertorier toutes les publications dans un type de publication personnalisé spécifique et de les organiser en fonction du terme de taxonomie personnalisé qui leur est associé?

Par exemple;

Terme de taxe # 1
Type de poste
Type de poste
Type de message

Terme de taxonomie n ° 2
Type de poste
Type de message

Toute aide serait très appréciée.

Merci.

    
posée Dean Elliott 25.09.2012 - 16:24

4 réponses

42

Essayez ceci

$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;
     }
}

Nous obtenons tous les termes d'une taxonomie, les parcourons et activons un lien de titre vers chaque message appartenant à ce terme. Si vous devez réorganiser les termes de taxonomie, vous pouvez le faire très facilement avec un plugin. Réorganiser la taxonomie , je crois. Mais soyez attentif au fait que ce plug-in ajoute (!) une autre colonne à votre tableau lors de l'activation et que ne le supprime pas à la désactivation !

    
réponse donnée GhostToast 25.09.2012 - 18:10
1

Ce n’est pas une solution particulièrement élégante, mais vous pouvez créer plusieurs requêtes pour chacun des termes spécifiques, puis les générer. J'espère que quelqu'un pourra trouver un moyen plus agréable de tirer automatiquement les termes pour modifier la sortie / le tri. Mais cela vous ferait avancer.

<?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;
}
    
réponse donnée theMojoWill 25.09.2012 - 17:55
0

Sympa! La solution de GhostOne était ce que je cherchais. Dans mon cas, le type de message personnalisé était «minining_accidents» et les taxonomies personnalisées associées à ce type étaient des «types d'accident» qui comportaient plusieurs termes. Mon idée était de créer un widget personnalisé pour afficher la liste des publications sous des termes dans cette taxonomie personnalisée. Dans mon essai, il a obtenu ce que je voulais. Le repos était rehaussé. Voici mon code:

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;
}

Oui! Il y a toujours une option pour améliorer encore le code.

    
réponse donnée Niraj Kumar 10.07.2014 - 14:16
-1

Pour afficher une liste de publications personnalisées à partir d'une taxonomie personnalisée

$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;
}

Titre

  • Élément de liste
  • Élément de liste
  • Élément de liste
réponse donnée wpdevramki 29.07.2014 - 07:58

Lire d'autres questions sur les étiquettes