Вопрос по php – WordPress - Получение сообщений по пользовательскому типу и категории сообщений, при этом каждая категория автоматически включается в DIV

1

Извините за длинное название вопроса. Я пытался быть точным.

Мне нужно разработать запрос WordPress, который будет автоматически получать сообщения из определенного пользовательского типа сообщения, определять, как каждая публикация классифицируется, а затем выводить сообщения по категориям на страницу, причем каждая категория заключена в свой собственный DIV.

Например, у меня есть пользовательский тип записи под названием «Картографические данные». В этом пользовательском типе записи у меня есть иерархическая таксономия, которую я назвал «Категории», а в рамках этой таксономии - ряд категорий, «Категория № 1», «Категория № 2» и т. Д. И т. Д. Каждая категория имеет количество сообщений.

Таким образом, запрос должен получить список всех категорий в пользовательском типе записи, а затем вывести что-то вроде этого:

<code><div id="category-1">
     <div class="post">This is a post in Category 1</div>
     <div class="post">This is another post in Category 1</div>
</div>
<div id="category-2">
     <div class="post">This is a post in Category 1</div>
     <div class="post">This is another post in Category 1</div>
</div>
</code>

У меня есть следующий код, который работает с системой категорий WordPress по умолчанию, однако мне нужно либо переписать ее, либо обновить, чтобы она могла работать с пользовательскими типами записей и их таксономиями.

<code><?php 
    $cat_args=array();
    $categories=get_categories($cat_args);
    foreach($categories as $category) {
        $args=array(
            'category__in' => array($category->term_id),
        );
    $posts=get_posts($args);
        if ($posts) {
            echo '<div class="cat" id="' . $category->slug.'" name="' . $category->name.'">';
            foreach($posts as $post) {
          setup_postdata($post); 
?>

<?php the_title();?>
<?php the_content();?>

<?php
        } // foreach($posts
        echo '</div>';
      } // if ($posts
    } // foreach($categories
?>
</code>

Если бы кто-нибудь мог предоставить мне обновленный код или рабочий пример, я был бы очень признателен.

Ты уже довольно близко! Вот предыдущее представление, которое отвечает на это: / Stackoverflow.com вопросы / 8643508 / ... CookiesForDevo

Ваш Ответ

1   ответ
6

он получает все таксономии, но его можно легко изменить, чтобы активировать то, что вы пытаетесь

// for a given post type, return all
$post_type = 'shows';
$tax = 'show-topic';
$tax_terms = get_terms($tax, array('orderby' => 'id', 'order' => 'ASC', 'exclude' => '135, 49, 25, 24, 54'));
if ($tax_terms) {
    foreach ($tax_terms as $tax_term) {
        $args = array(
            'post_type' => $post_type,
            "$tax" => $tax_term->slug,
            'post_status' => 'publish',
            'posts_per_page' => - 1,
            'orderby' => 'title',
            'order' => 'ASC',
            'caller_get_posts' => 1
            ); // END $args
        $my_query = null;
        $my_query = new WP_Query($args);
        if ($my_query->have_posts()) {
            echo '<h3>' . $tax_term->name . '</h3>';
            while ($my_query->have_posts()) : $my_query->the_post();
            ?>
          <div class="post row" id="post-<?php the_ID(); ?>">
                    <div class="thumb-box three column">
                        <?php
            $src = wp_get_attachment_image_src(get_post_thumbnail_id());
            if (has_post_thumbnail()) {
                the_post_thumbnail();
            } else {
                if (get_post_meta($post->ID, "thumbnail", true)):
                    ?>
                                <a href="<?php the_permalink() ?>" rel="bookmark"><img src="<?php echo get_post_meta($post->ID, "thumbnail", true); ?>" alt="<?php the_title(); ?>" /></a>
                            <?php else: ?>
                                <a href="<?php the_permalink() ?>" rel="bookmark"><img src="<?php bloginfo('stylesheet_directory'); ?>/images/insp-tv-small.png" alt="<?php the_title(); ?>" /></a>
                            <?php endif;
            }
            ?>
                    </div>
                    <div class="post-content nine columns">
                        <h4 class="posttitle archiveposttitle">
                            <a href="<?php the_permalink() ?>" rel="bookmark" title="<?php _e('Permanent Link to', 'buddypress') ?> <?php the_title_attribute(); ?>"><?php the_title(); ?></a>
                        </h4>
                        <div class="entry">
                            <?php the_excerpt(); ?>
                        </div>
                    </div>
                </div>
          <?php
            endwhile;
        } // END if have_posts loop
        wp_reset_query();
    } // END foreach $tax_terms
} // END if $tax_terms

?>

Похожие вопросы