Как исправить «пользовательские пост-шоу по категориям» в WordPress - PullRequest
0 голосов
/ 29 мая 2019

Как я могу исправить эту проблему? Я пытаюсь передать переменную в WP_Query на 'category_name' => $category->slug, но не выводить сообщения в выводе. Когда я удаляю строку '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 голосов
/ 29 мая 2019

Похоже, что вы используете пользовательскую таксономию для своего типа поста, и в этом случае код должен выглядеть примерно так:

$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 Query здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...