Lister tous les messages dans un type de message personnalisé par taxonomie

25

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

Par exemple;

Taxonmy Term # 1
Type de
message Type de
message Type de message

Taxonomy Term # 2
Type de
message Type de message

Toute aide serait appréciée.

Merci.

Dean Elliott
la source

Réponses:

52

Essaye ça

$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 lançons un lien de titre à chaque message qui appartient à ce terme. Si vous devez réorganiser les termes de taxonomie, vous pouvez le faire avec un plugin assez facilement. Réorganiser la taxonomie , je crois. Mais attention, ce plugin ajoute (!) Une autre colonne à votre table lors de l' activation et ne la supprime pas lors de la désactivation !

GhostToast
la source
Salut @ GhostToast Cela fonctionne très bien, j'ai une question directe, comment puis-je filtrer cela par taxonomie, j'ai le tennis, le golf, le football, le voleyball, ce code les amène tous avec leur poste qui a la taxonomie vérifiée, comment puis-je filtrer n'affiche que la taxonomie du football avec ses publications.
Rodrigo Zuluaga
@RodrigoZuluaga qui serait alors une simple requête de base. à emporter $custom_termset foreach()définissez simplement 'terms'manuellement la limace ou ce que vous voulez.
GhostToast
Je l'ai eu un peu différent, je pense, mais votre code est bon $ args = array ('post_type' => 'publica', 'tax_query' => array (array ('taxonomy' => 'comision-publicaciones', 'field' = > 'name', 'terms' => array ($ ter_name)),),);
Rodrigo Zuluaga
1

Pas une solution particulièrement élégante, mais vous pouvez créer plusieurs requêtes chacune pour les termes spécifiques, puis les générer. J'espère que quelqu'un pourra trouver une meilleure façon d'extraire 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;
}
theMojoWill
la source
0

Joli! La solution de GhostOne était ce que je cherchais. Dans ma situation, le type de message personnalisé était «minining_accidents» et les taxonomies personnalisées associées à celui-ci étaient des «types d'accident» qui comportaient plusieurs termes. Mon idée était de créer un widget personnalisé pour afficher la liste des articles sous des termes dans ces taxonomies personnalisées. Lors de mon essai, il a obtenu ce que je voulais. Le repos était embelli. 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.

Niraj Kumar
la source
-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
wpdevramki
la source