Özel yazı tipindeki tüm gönderileri taksonomiye göre listele


25

Tüm gönderileri belirli bir özel gönderi türünde listelememin ve bunları ekli özel taksonomi terimine göre düzenlememin bir yolu var mı?

Örneğin;

Taksonomi Dönem # 1
Gönderi Türü
Gönderi Türü
Gönderi Türü

Taksonomi Dönem # 2
Gönderi Türü
Gönderi Türü

Herhangi bir yardım en çok takdir edilecektir.

Teşekkürler.

Yanıtlar:


52

Bunu dene

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

Bir taksonominin tüm terimlerini elde ederiz, içlerinden geçer ve o terime ait her bir yazıya bir başlık bağlantısı keseriz. Taksonomi terimlerini yeniden sıralamanız gerekirse, bunu kolayca bir eklentiyle yapabilirsiniz. Yeniden düzenlemek Taksonomi , inanıyorum. Ama ödemeli dikkat bu eklenti eklediği (!) Diğerinde masanıza kolon aktivasyonu ve etkisiz hale getirilmesinden sonra bunu kaldırmaz !


Merhaba @GhostToast Bu harika çalışıyor, doğrudan bir sorum var, bunu taksonomiye göre nasıl filtreleyebilirim, tenis, golf, futbol, ​​voleybolum var, bu kodlar hepsinin taksonomisini kontrol eden yazılarına getirdi, Nasıl filtreleyebilirim? Futbol Taksonomisini sadece yazılarıyla göster.
Rodrigo Zuluaga

@RodrigoZuluaga, o zaman basit bir tek sorgu olurdu. götürmek $custom_termsve foreach()sadece tanımlamak 'terms'istediğiniz sümüklü böcek ya da her türlü manuel.
GhostToast

Ben biraz farklı anladım bence ama kodun cehennem iyi $ args = array ('post_type' => 'publica', 'tax_query' => array (array ('taxonomy' => 'comision-publicaciones', 'field' = > 'name', 'terms' => array ($ ter_name)),),);
Rodrigo Zuluaga,

1

Özellikle şık bir çözüm değil, her biri belirli terimler için birden fazla sorgu oluşturabilir ve sonra bunları gönderebilirsiniz. Umarım birileri çıktı / sıralama değiştirmek için şartları otomatik olarak çekerek daha iyi bir yol bulabilir. Ama bu seni ilerletir.

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

Güzel bir! GhostOne'un çözümü aradığım şeydi. Benim durumumda, özel posta tipi 'minining_accidents' idi ve bununla ilişkili özel taksonomiler, altında birden fazla terim bulunan 'kaza türleri' idi. Benim fikrim, bu özel taksonomilerde terimlerin altındaki yayınların listesini göstermek için özel bir widget oluşturmaktı. Denememde istediğim şeyi aldı. Dinlenme çekişti. İşte kodum:

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

Evet! Kodu daha da geliştirmek için her zaman bir seçenek vardır.


-1

Özel bir taksonomiden gelen özel yayınların listesini göstermek için

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

Başlık

  • Liste öğesi
  • Liste öğesi
  • Liste öğesi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.