it-swarm.asia

قائمة جميع المشاركات في نوع وظيفة مخصصة حسب التصنيف

هل هناك طريقة يمكنني سرد ​​كل المنشورات في نوع منشور مخصص معين وترتيبها حسب مصطلح التصنيف المخصص المرفق بها؟

فمثلا؛

مصطلح Taxonmy # 1
نوع آخر
نوع آخر
نوع آخر

مصطلح التصنيف # 2
نوع آخر
نوع آخر

أي مساعدة سيكون أكثر تقدير.

شكر.

22
Dean Elliott

جرب هذا

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

نحصل على جميع شروط التصنيف ونفحصها ونطلق رابط عنوان لكل منشور ينتمي لهذا المصطلح. إذا كنت بحاجة إلى إعادة ترتيب شروط التصنيف ، يمكنك القيام بذلك باستخدام مكون إضافي بسهولة. إعادة ترتيب التصنيف ، على ما أعتقد. لكن انتبه أن هذا البرنامج المساعد يضيف (!) عمودًا آخر إلى طاولتك على التنشيط و لا يزيله عند إلغاء التنشيط !

47
GhostToast

ليس حلاً أنيقًا بشكل خاص ولكن يمكنك إنشاء استعلامات متعددة لكل منها للمصطلحات المحددة ثم إخراجها. نأمل أن يتمكن شخص ما من الخروج بطريقة أجمل لسحب المصطلحات تلقائيًا لتعديل الإخراج/الفرز. ولكن هذا سوف تحصل على الذهاب.

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

هذا لطيف! كان حل GhostOne هو ما كنت أبحث عنه. في وضعي ، كان نوع المنشور المخصص هو "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;
}

نعم فعلا! هناك دائمًا خيار لتحسين الرمز.

0
Niraj Kumar