Listar todas as postagens no tipo de postagem personalizada por taxonomia


25

Existe uma maneira de listar todas as postagens em um tipo de postagem personalizado específico e organizá-las pelo termo de taxonomia personalizado anexado a elas?

Por exemplo;

Taxonmy Term # 1
Tipo de
postagem Tipo de
postagem Tipo de postagem

Taxonomia Termo # 2
Tipo de
postagem Tipo de postagem

Qualquer ajuda seria muito apreciada.

Obrigado.

Respostas:


52

Tente isto

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

Obtemos todos os termos de uma taxonomia, passamos por eles e disparamos um link de título para cada post que pertence a esse termo. Se você precisar reordenar os termos de taxonomia, poderá fazê-lo com um plugin com bastante facilidade. Reordenar a taxonomia , acredito. Mas preste atenção que este plug-in adiciona (!) Outra coluna à sua tabela na ativação e não o remove após a desativação !


Oi @GhostToast Isso funciona muito bem, tenho uma pergunta direta, como posso filtrar isso por taxonomia, tenho tênis, golfe, futebol, vôlei, esse código traz todos eles com suas postagens com a taxonomia marcada, como posso filtrar para mostrar apenas a taxonomia do futebol com seus posts.
Rodrigo Zuluaga

@RodrigoZuluaga que seria uma consulta única básica na época. leve embora $custom_termse foreach()apenas defina 'terms'manualmente a lesma ou o que quiser.
7897 GhostToast

Eu entendi um pouco diferente, mas o seu código é muito bom $ args = array ('post_type' => 'publica', 'tax_query' => array (array ('taxonomy' => 'comision-publicaciones', 'field' = > 'nome', 'termos' => matriz ($ ter_name)))));
Rodrigo Zuluaga

1

Não é uma solução particularmente elegante, mas você pode criar várias consultas para cada um dos termos específicos e depois enviá-las. Espero que alguém possa ter uma maneira melhor de extrair automaticamente os termos para modificar a saída / classificação. Mas isso faria você ir.

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

0

Agradável! A solução do GhostOne era o que eu estava procurando. Na minha situação, o tipo de postagem personalizada era 'minining_accidents' e as taxonomias personalizadas associadas a isso eram 'tipos de acidente', que tinham vários termos sob ela. Minha idéia era criar um widget personalizado para mostrar a lista de postagens sob os termos dessas taxonomias personalizadas. No meu teste, conseguiu o que eu queria. O resto foi enfeitado. Aqui está o meu 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;
}

Sim! Sempre há uma opção para melhorar ainda mais o código.


-1

Para mostrar uma lista de postagens personalizadas de uma taxonomia 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

  • Item da lista
  • Item da lista
  • Item da lista
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.