รับโพสต์ภายใต้อนุกรมวิธานที่กำหนดเอง


31

ฉันไม่ได้รับโพสต์ภายใต้ taxonomy ที่กำหนดเอง ( fabric_building_types) ฉันได้รับcat_idและcat->nameยัง แต่ไม่สามารถรับโพสต์

$args = array(
    'type'                     => 'post',
    'child_of'                 => 0,
    'parent'                   => '',
    'orderby'                  => 'name',
    'order'                    => 'ASC',
    'hide_empty'               => 1,
    'hierarchical'             => 1,
    'exclude'                  => '',
    'include'                  => '',
    'number'                   => '',
    'taxonomy'                 => 'fabric_building_types',
    'pad_counts'               => false 
); 

$categories = get_categories( $args );

foreach ( $categories as $cat ) {

    // here's my code for getting the posts for custom post type

    $posts_array = get_posts(
        array(
            'showposts' => -1,
            'post_type' => 'fabric_building',
            'tax_query' => array(
                array(
                    'taxonomy' => 'fabric_building_types',
                    'field' => $cat->cat_ID,
                    'terms' => $cat->name,
                )
            )
        )
    );
    print_r( $posts_array ); 
}

ทุกคนได้โปรดช่วยฉันออก ... ขอบคุณล่วงหน้า


1
ค่าที่ถูกต้องสำหรับfieldในแบบสอบถามภาษีมีterm_id, หรือname slug
Milo

คำตอบ:


57

แบบสอบถามภาษีของคุณไม่ถูกต้องfieldควรจะเป็นข้อมูลที่คุณต้องการแบบสอบถามใน: term_id, nameหรือslug-

$posts_array = get_posts(
    array(
        'posts_per_page' => -1,
        'post_type' => 'fabric_building',
        'tax_query' => array(
            array(
                'taxonomy' => 'fabric_building_types',
                'field' => 'term_id',
                'terms' => $cat->term_id,
            )
        )
    )
);

วิธีการให้เลขหน้าโพสต์นี้หลังจากได้รับของพวกเขา?
Andreas Hunter

3

คุณควรใช้get_terms()เพื่อ taxonomies เมื่อคุณสามารถ

<?php 
/* Add your taxonomy. */
$taxonomies = array( 
    'fabric_building_types',
);

$args = array(
    'orderby'           => 'name', 
    'order'             => 'ASC',
    'hide_empty'        => true, 
    'exclude'           => array(), 
    'exclude_tree'      => array(), 
    'include'           => array(),
    'number'            => '', 
    'fields'            => 'all', 
    'slug'              => '', 
    'parent'            => '',
    'hierarchical'      => true, 
    'child_of'          => 0, 
    'get'               => '', 
    'name__like'        => '',
    'description__like' => '',
    'pad_counts'        => false, 
    'offset'            => '', 
    'search'            => '', 
    'cache_domain'      => 'core'
); 

$terms = get_terms( $taxonomies, $args );
foreach ( $terms as $term ) {

// here's my code for getting the posts for custom post type

$posts_array = get_posts(
                        array( 'showposts' => -1,
                            'post_type' => 'fabric_building',
                            'tax_query' => array(
                                array(
                                'taxonomy' => 'fabric_building_types',
                                'field' => term_id,
                                'terms' => $term->name,
                                )
                            )
                        )
                    );
    print_r( $posts_array ); 
}
?>

ลิงก์ไปยัง Codex : http://codex.wordpress.org/Function_Reference/get_terms


ขอบคุณ ... แต่ปัญหาเดียวกันยังคงอยู่ .. แถวที่ว่างเปล่า .. เป็นเพราะฉันกำลังทำสิ่งผิดปกติในการกำหนดประเภทโพสต์ที่กำหนดเองเนื่องจากฉันได้รับชุดคำศัพท์ ..
Parth Kumar

คุณลองรหัสปรับปรุงด้านบนแล้วหรือยัง
Courtney Ivey

1
ที่จริงแล้วตามที่ Milo แนะนำสนามจะใช้สาย .. นั่นคือข้อผิดพลาด .. ซึ่งฉันได้รับการแก้ไข ..
Parth Kumar

0
global $post; $id = $post->ID;

$cat = get_the_category($id);
$loc = get_the_terms($id, 'taxonomy');
$posts = get_posts(
array('post_type' => 'post',
    'post_status' => 'publish', 
    'posts_per_page' => -1, 
    'category' => $cat[0]->term_id, 
    'tax_query' => array(
        array(
            'taxonomy' => 'location',
            'field' => 'id',
            'terms' => $loc[0]->term_id,
        )
    )
)
);
print_r($posts);

สิ่งนี้ควรจะได้ผล


0

รับโพสต์ที่กำหนดให้กับอนุกรมวิธานปัจจุบัน

คุณสามารถเพิ่มรหัสด้านล่างใน taxonomy-your_tax.php

<div class="a-article-wrapper">

                <?php 

                    $terms = wp_get_post_terms( $post->ID, 'your-taxonomy'); 
                    $terms_ids = [];

                    foreach ( $terms as $term ) {
                        $terms_ids[] = $term->term_id;
                    }

                    $args = array(
                        'post_type' => 'your-post-type',
                        'tax_query' => array(
                            'relation' => 'AND',
                            array(
                                'taxonomy' => 'your-taxonomy',
                                'field'    => 'term_id',
                                'terms'    => $terms_ids
                            )
                        ),
                    );

                    $query = new WP_Query($args);
                    if ( $query->have_posts() ) {
                        while ( $query->have_posts() ) {
                    ?>

                     <div class="row">
                        <div class="col-md-8 a-article-row">
                            <div class="row">
                                <?php $query->the_post();?>
                                <div class="a-post-time">
                                    <span class="a-current-date"><?php the_time('j F, D') ?></span>
                                    <span class="a-current-time"><?php the_time('g:i a') ?></span>
                                </div>
                                <div class="a-article-title">
                                    <?php the_title(); ?> 
                                </div>
                                <div class="a-article-content">
                                    <div id="excerpt"><?php the_excerpt(); ?></div>

                                    <?php the_content(); ?>
                                </div>
                                <div class="a-article-tags">
                                    <?php echo get_the_term_list( get_the_ID(), 'your-taxonomy', '', ',' ); ?>
                                </div>
                            </div>
                        </div>
                    </div>

                    <?php } } ?>
            </div> 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.