Wyświetl wszystkie posty w niestandardowym typie według taksonomii

25

Czy istnieje sposób, aby wyświetlić listę wszystkich postów w określonym niestandardowym typie postów i uporządkować je według dołączonego do nich niestandardowego terminu systematyki?

Na przykład;

Taksonomia Nr 1
Rodzaj
postu Typ
postu Typ postu

Taksonomia Termin nr 2
Rodzaj
postu Typ postu

Jakakolwiek pomoc byłaby najbardziej doceniana.

Dzięki.

Dean Elliott
źródło

Odpowiedzi:

52

Spróbuj tego

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

Otrzymujemy wszystkie warunki taksonomii, przeglądamy je i odpalamy tytułowy link do każdego postu, który należy do tego terminu. Jeśli chcesz zmienić kolejność warunków taksonomii, możesz to zrobić za pomocą wtyczki dość łatwo. Zmień kolejność taksonomii , jak sądzę. Pamiętaj jednak, że ta wtyczka dodaje (!) Kolejną kolumnę do twojej tabeli przy aktywacji i nie usuwa jej po dezaktywacji !

GhostToast
źródło
Cześć @GhostToast Działa to świetnie, mam bezpośrednie pytanie, jak mogę to filtrować według taksonomii, mam tenis, golf, piłkę nożną, siatkówkę, kody te przynoszą im wszystkie posty, które mają sprawdzoną taksonomię, Jak mogę filtrować do pokaż tylko taksonomię piłkarską z jej postami.
Rodrigo Zuluaga
@RodrigoZuluaga byłoby to proste pojedyncze zapytanie. zabrać $custom_termsi po foreach()prostu 'terms'ręcznie zdefiniować ślimak lub cokolwiek chcesz.
GhostToast,
Wydaje mi się, że jest trochę inaczej, ale twój kod jest cholernie dobry. > „nazwa”, „warunki” => tablica ($ ter_name)),),);
Rodrigo Zuluaga
1

Nie jest to szczególnie eleganckie rozwiązanie, ale możesz utworzyć wiele zapytań dla określonych warunków, a następnie je wydrukować. Mam nadzieję, że ktoś może wymyślić lepszy sposób automatycznego wyciągania warunków w celu modyfikacji danych wyjściowych / sortowania. Ale to cię uruchomi.

<?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
źródło
0

Niezłe! Rozwiązaniem GhostOne było to, czego szukałem. W mojej sytuacji niestandardowym typem postu było „minining_accident”, a niestandardowe taksonomie z tym związane to „typy wypadków”, które zawierały wiele terminów. Moim pomysłem było stworzenie niestandardowego widżetu, aby wyświetlać listę postów zgodnie z warunkami w tych niestandardowych taksonomiach. W mojej próbie próbnej dostałem to, czego chciałem. Reszta była świerkowa. Oto mój kod:

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

Tak! Zawsze istnieje opcja dalszej poprawy kodu.

Niraj Kumar
źródło
-1

Aby wyświetlić listę niestandardowych postów z niestandardowej taksonomii

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

Tytuł

  • Element listy
  • Element listy
  • Element listy
wpdevramki
źródło