Проблема с отображением одного сообщения из каждой категории


Я бился головой почти целый день, но не мог решить эту проблему. мне нужно показать один пост из 4 категорий xx вот мой код

                <?php
                $cat_args = array(
                  'orderby' => 'name',
                  'order' => 'ASC',
                  'include' => '44,45,46,51'
                );

                $fcategories =   get_categories($cat_args); 

                foreach($fcategories as $fcategory) {
                    echo '<dl>';
                    echo '<dt> <a href="' . get_category_link( $fcategory->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $fcategory->name ) . '" ' . '>' . $fcategory->name.'</a></dt>';

                     $post_args = array(
                      'showposts' => 1,
                      'category' => $fcategory->cat_ID
                    );

                    $fposts = get_posts($post_args);

                foreach($fposts as $fpost) : setup_postdata($fpost);    ?>
                        <dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>
                    <?php

                    echo '<dd class="view-all"> <a href="' . get_category_link( $fcategory->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $fcategory->name ) . '" ' . '>View all posts in ' . $fcategory->name.'</a></dd>';
                    echo '</dl>';
                endforeach; 
                    }
                ?>

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

Кошка-1 кошка-2 кошка-3 кошка-4 (это нормально)
сообщение-1 сообщение-1 сообщение-1 сообщение-1 (это проблема)

В то время как это должно были

Кошка-1 кошка-2 кошка-3 кошка-4
пост-1 пост-2 пост-3 пост-4

Пожалуйста, помогите

Author: user10105, 2011-12-24

1 answers

Я проверил этот код локально, вот рабочий фрагмент:

        <?php
        $cat_args = array(
                'orderby' => 'name',
                'order' => 'ASC',
                );

        $fcategories =   get_categories($cat_args); 

        foreach($fcategories as $fcategory) {
            echo '<dl>';
            echo '<dt> <a href="' . get_category_link( $fcategory->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $fcategory->name ) . '" ' . '>' . $fcategory->name.'</a></dt>';

            $post_args = array(
                    'posts_per_page' => 1,
                    'cat' => $fcategory->cat_ID
                    );

            $fposts = query_posts($post_args);

            while(have_posts()) : the_post();    ?>
                <dd><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></dd>
                <?php

                echo '<dd class="view-all"> <a href="' . get_category_link( $fcategory->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $fcategory->name ) . '" ' . '>View all posts in ' . $fcategory->name.'</a></dd>';
            echo '</dl>';
            endwhile; 
        }
        wp_query_reset();
?>

Оригинальный ответ:
Я думаю, что проблема может быть здесь:

$post_args = array(
  'showposts' => 1,
  'category' => $fcategory->cat_ID
);

Вы используете аргумент category, он должен быть cat, поэтому попробуйте этот код:

$post_args = array(
  'showposts' => 1,
  'cat' => $fcategory->cat_ID
);
 2
Author: mbajur, 2011-12-24 13:38:00