कस्टम पोस्ट प्रकार में सभी पोस्ट को वर्गीकरण द्वारा सूचीबद्ध करें


25

क्या कोई तरीका है जो मैं सभी पोस्ट को एक विशिष्ट कस्टम पोस्ट प्रकार में सूचीबद्ध कर सकता हूं और उन्हें संलग्न किए गए कस्टम टैक्सोनॉमी शब्द द्वारा व्यवस्थित कर सकता हूं?

उदाहरण के लिए;

टैक्सोनी टर्म # 1
पोस्ट टाइप
पोस्ट टाइप
पोस्ट टाइप

टैक्सोनॉमी टर्म # 2
पोस्ट टाइप
पोस्ट टाइप

कोई भी सहायता सराहनीय होगी।

धन्यवाद।

जवाबों:


52

इसे इस्तेमाल करे

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

हम एक वर्गीकरण की सभी शर्तों को प्राप्त करते हैं, उनके माध्यम से लूप करते हैं, और उस पद से संबंधित प्रत्येक पद के लिए शीर्षक लिंक को बंद कर देते हैं। यदि आपको टैक्नोमी की शर्तों को फिर से बनाने की आवश्यकता है, तो आप ऐसा कर सकते हैं एक प्लगइन के साथ बहुत आसानी से। करदाता की राय, मेरा मानना ​​है। लेकिन ध्यान दें कि यह प्लगइन सक्रियण पर आपकी तालिका में एक और स्तंभ जोड़ता है ( और इसे निष्क्रिय करने पर नहीं हटाता है !


हाय @GhostToast यह बहुत अच्छा काम करता है, मेरा एक सीधा सवाल है, मैं इसे टैक्सोनॉमी द्वारा कैसे फ़िल्टर कर सकता हूं, मेरे पास टेनिस, गोल्फ, सॉकर, वोलेबॉल है, यह कोड उन सभी को अपने पोस्ट के साथ लाता है जिनकी टैक्सोनॉमी जाँच की गई है: मैं कैसे फ़िल्टर कर सकता हूं केवल अपने पदों के साथ फ़ुटबॉल वर्गीकरण को दिखाएं।
रोड्रिगो ज़ुलुगा

@RodrigoZuluaga कि तब एक बुनियादी एकल क्वेरी होगी। दूर ले जाओ $custom_termsऔर foreach()और बस 'terms'स्लग या जो भी आप चाहते हैं, उसे मैन्युअल रूप से परिभाषित करें ।
घोस्टटॉस्ट

मुझे यह थोड़ा अलग लगता है, लेकिन मुझे लगता है कि आपका कोड नरक अच्छा $ args = array ('post_type' => 'publica', 'tax_query' => array ('taxonomy' => 'comision-publicaceses', 'field' =) > 'नाम', 'शब्द' => सरणी ($ ter_name)),),);
रॉड्रिगो ज़ुलुगा

1

विशेष रूप से सुरुचिपूर्ण समाधान नहीं है, लेकिन आप विशिष्ट शर्तों के लिए प्रत्येक से कई प्रश्न बना सकते हैं और फिर उन्हें आउटपुट कर सकते हैं। उम्मीद है कि कोई व्यक्ति आउटपुट / छँटाई को संशोधित करने के लिए शर्तों को स्वचालित रूप से खींचने के एक अच्छे तरीके के साथ आ सकता है। लेकिन यह आपको मिल जाएगा।

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

अच्छा है! घोस्टऑन का समाधान वही था जिसकी मुझे तलाश थी। मेरी स्थिति में कस्टम पोस्ट प्रकार 'minining_accidents' था और इससे जुड़ी कस्टम टैक्सोनॉमी 'दुर्घटना-प्रकार' थी, जिसके तहत कई शब्द थे। मेरा विचार इस कस्टम टैक्सोनॉमी में शर्तों के तहत पदों की सूची दिखाने के लिए एक कस्टम विजेट बनाने का था। मेरे ट्रायल रन में वह मिला जो मैं चाहता था। आराम फरमाया गया। यहाँ मेरा कोड है:

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

हाँ! कोड को और बेहतर बनाने के लिए हमेशा एक विकल्प होता है।


-1

कस्टम टैक्सोनॉमी से कस्टम पोस्ट की सूची दिखाना

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

शीर्षक

  • सामग्री सूचीबद्ध करें
  • सामग्री सूचीबद्ध करें
  • सामग्री सूचीबद्ध करें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.