如何在WordPress中修复``按类别显示自定义帖子''

时间:2019-05-29 17:12:05

标签: php wordpress foreach custom-post-type

如何解决此问题?我正在尝试在'category_name' => $category->slug的WP_Query中传递一个变量,但未在输出中显示任何帖子。 当我从代码中删除'category_name' => $category->slug,行时,然后显示帖子,但需要按类别显示帖子。

<?php
function mytheme_schedule_shortcode($atts, $content = null){
    extract( shortcode_atts( array(
        'style'         => 1
    ), $atts) );
    $domain = 'mytheme-toolkit';
    $mytheme_schedule_categories = get_terms('schedule_cat');

    $mytheme_schedule_markup ='
        <section class="schedule-area bg-image ptb-120">
            <div class="container">
                <div class="row">
                    <div class="col-lg-12">
                        <div class="tab">
                            <ul class="tabs">';
                            if (!empty($mytheme_schedule_categories) && ! is_wp_error($mytheme_schedule_categories)) {
                                foreach($mytheme_schedule_categories as $category){
                                $mytheme_schedule_markup .='
                                <li>
                                    <a href="#">'.esc_html__($category->name).'
                                        <span>'.esc_html__($category->slug).'</span>
                                    </a>
                                </li>'; 
                                }   
                            } 
                            $mytheme_schedule_markup .=' 
                            </ul>

                            <div class="tab_content">';
                                foreach($mytheme_schedule_categories as $category){
                                    $mytheme_schedule_markup .='
                                    <div class="tabs_item">
                                        <ul class="accordion">';
                                            $args = array(
                                                'post_type' => 'schedule',
                                                'posts_per_page' => -1,
                                                'category_name' => $category->slug,
                                            );
                                            $schedule_array = new WP_Query( $args );

                                            while($schedule_array->have_posts()): $schedule_array->the_post();
                                                $mytheme_schedule_markup .= '
                                                <li class=-item">
                                                        <h3>'.get_the_title().'</h3>
                                                </li>';

                                            endwhile;
                                            wp_reset_query();
                                            $mytheme_schedule_markup .= ' 
                                        </ul>   
                                    </div>';
                                }
                                $mytheme_schedule_markup .='
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </section>';
    return $mytheme_schedule_markup;
}
add_shortcode('mytheme_schedule', 'mytheme_schedule_shortcode');

1 个答案:

答案 0 :(得分:0)

您似乎在对帖子类型使用自定义分类法,在这种情况下,代码应类似于以下内容:

$args = array(
  'post_type' => 'schedule',
  'posts_per_page' => -1,
  'tax_query' => array(
    array(
        'taxonomy' => 'schedule_cat',
        'field'    => 'slug',
        'terms'    => $category->slug,
    ),
  ),
);
$schedule_array = new WP_Query( $args );

这应该可以为您解决问题。祝你好运!

为将来参考,请检查WP查询参数here