簡體   English   中英

get_categories中的Wordpress WP_Query無法與CPT一起使用

[英]Wordpress WP_Query inside get_categories not working with CPT

編輯:將tax_query更改為“ slug”后,它現在在第一個循環(第一個貓)中輸出帖子,但在下一個選項卡/貓中不輸出,我知道它已分配了許多已發布的帖子。

我創建了一個短代碼,旨在獲取CPT中的所有類別並將其放入引導程序選項卡,每個選項卡中包含一定數量的帖子。

為此,我對導航選項卡進行get_categories(工作正常)。 然后,我再次執行get_categories來輸出選項卡的內容(也可以正常工作),並且在每一個我抓住帖子的地方都帶有一個wp_query。 這是行不通的。 無輸出。

如果我回顯類別名稱或可以從get_categories中獲取的任何數據,則回顯為它。 所以看來問題出在WP_Query。

這是代碼:

add_shortcode( 'tabbed_grid_articles', 'tabbed_grid_articles' );
function tabbed_grid_articles($args = array()){
    global $post;
    $current_id = $post->ID;
    $defaults = apply_filters( 'dy_tabbed_grid_default_args', array(
        'posts_per_page'   => 1,
        'orderby'       => 'date',
        'order'         => 'DESC',
        'echo'          => true,
        'post_type'     => 'playbooks',
        'category'      => 0,
        'hide_empty'    => true,
        'exclude'       => '',
        'include'       => '',
        'taxonomy'      => 'playbooks_category',

    ));

    $args = wp_parse_args( $args, $defaults );

    $cat_args = array(
        'taxonomy'      => $args['taxonomy'],
        'orderby'       => 'menu_order',
        'order'         => 'ASC',
        'hierarchical'  => true,
        'parent'        => $args['category'],
        'hide_empty'    => $args['hide_empty'],
        'child_of'      => $args['category'],
        'exclude'       => $args['exclude'],
        'include'       => $args['include']
    );

    $categories = get_categories($cat_args);
    ?> <ul class="nav nav-tabs" role="tablist"> <?php
        $count = 0;
        foreach($categories as $category){
            $targetID = str_replace(' ', '-', $category->cat_name);
            ?>        <!-- Nav tabs -->
            <li role="presentation" class="<?php if($count == 0){echo 'active'; $count ++;} ?>"><a href="#tab-<?php echo $targetID ?>" aria-controls="tab-<?php echo $targetID ?>" role="tab" data-toggle="tab"><?php echo $category->cat_name ?></a></li>
            <?php
        }
       // wp_reset_postdata();
        ?>     </ul>
    <!-- Tab panes -->
    <div class="tab-content">
        <?php
        $count = 0;
        foreach($categories as $category) {
            $targetID = str_replace(' ', '-', $category->cat_name);
            $args['tax_query'] = array(array(
                    'taxonomy' => $args['taxonomy'],
                    'field' => 'slug',
                    'terms' => $category->cat_name,
                ),
            );
//            $args['cat'] = $category->cat_ID;
            $grid_query = new WP_Query($args);
            ?>
            <div role="tabpanel" class="tab-pane <?php if($count == 0){echo 'active'; $count ++;} ?>" id="tab-<?php echo $targetID ?>">
                <?php
                if($grid_query->have_posts()) {
                    while ($grid_query->have_posts()) {
                        $grid_query->the_post();
                        echo get_the_title();
                        //echo '1<br>';
                        //echo $args['cat'];
                        //echo $category->cat_name;
                        //echo get_the_excerpt();
                        echo '<br>';
                        //the_excerpt();
                    }
                    wp_reset_postdata();
                }
                ?></div>
            <?php
        }
        ?>



    </div>

    <?php
}

我嘗試了$ args ['cat'] = $ category-> cat_ID; 而不是tax_query,但均無效。 如果我將它們都注釋掉,那么我將從cpt獲得所有帖子。 目前只是呼應摘錄...

有任何想法嗎?

解決了。 我理所當然地認為,與名字相同,但事實並非如此。 我想我只是在第一次調試不起作用時才錯誤地將子彈更改為名稱。 無論如何,將'terms'=> $ category-> cat_name更改為'terms'=> $ category-> slug,並成功了。

希望這對以后的人有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM