显示所有帖子而不是指定类别的自定义WordPress类别页面

时间:2012-05-21 作者:user1370288

我正在尝试构建一个类别的自定义视图,我想让所有的帖子都在jQuery carosel中显示缩略图(每张幻灯片中有4个),我已经把它放到了一个阶段,它在视觉上看起来像我想要的样子,但它显示的是所有帖子,而不是你所在的类别,我有一种强烈的感觉,这是由于我的自定义循环使用了标准循环(我使用的是twentyten作为我的基础),有什么想法我做错了什么吗?

另一方面,cat。php(在底部)是通过手动添加一个post调用来实现的,每个新添加的项目都有一个post偏移量,是否有更好的方法来实现这一点,这样我就不需要为我要显示的每个帖子手动添加一个案例?

类别php。。。

    <div id="container">
            <div id="content" role="main">
                <div style="position: relative; margin:0 auto; width: 960px; height:500px;">
<!-- "previous page" action -->
<a class="prev browse left"></a>

<!-- root element for scrollable -->
<div class="scrollable" id="scrollable">

  <!-- root element for the items -->
  <div class="items">

    <?php
                    $category_description = category_description();
                    if ( ! empty( $category_description ) )
                        echo \'<div class="archive-meta">\' . $category_description . \'</div>\';

                /* Run the loop for the category page to output the posts.
                 * If you want to overload this in a child theme then include a file
                 * called loop-category.php and that will be used instead.
                 */
                get_template_part( \'cat\' );
                ?>


</div>

<!-- "next page" action -->
<a class="next browse right"></a>
</div>
            </div><!-- #content -->
        </div><!-- #container -->
猫。php(我的自定义循环)

<div>
<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php
global $post;
$args = array( \'numberposts\' => 1 );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post); ?>
                <span id="post-<?php the_ID(); ?>" <?php post_class(); ?>>


            <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'twentyten\' ), the_title_attribute( \'echo=0\' ) ); ?>" rel="bookmark">
                <?php the_post_thumbnail(\'large\');?>
            </a>
        </span>

<?php endforeach; ?>
<?php endwhile; // end of the loop. ?>

<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php
global $post;
$args = array( \'numberposts\' => 1, \'offset\'=> 1 );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post); ?>
                <span id="post-<?php the_ID(); ?>" <?php post_class(); ?>>


            <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'twentyten\' ), the_title_attribute( \'echo=0\' ) ); ?>" rel="bookmark">
                <?php the_post_thumbnail(\'large\');?>
            </a>
        </span>

<?php endforeach; ?>
<?php endwhile; // end of the loop. ?>


<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php
global $post;
$args = array( \'numberposts\' => 1, \'offset\'=> 2 );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post); ?>
                <span id="post-<?php the_ID(); ?>" <?php post_class(); ?>>


            <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'twentyten\' ), the_title_attribute( \'echo=0\' ) ); ?>" rel="bookmark">
                <?php the_post_thumbnail(\'large\');?>
            </a>
        </span>

<?php endforeach; ?>
<?php endwhile; // end of the loop. ?>
</div>

<div>


<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php
global $post;
$args = array( \'numberposts\' => 1, \'offset\'=> 3 );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post); ?>
                <span id="post-<?php the_ID(); ?>" <?php post_class(); ?>>


            <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'twentyten\' ), the_title_attribute( \'echo=0\' ) ); ?>" rel="bookmark">
                <?php the_post_thumbnail(\'large\');?>
            </a>
        </span>

<?php endforeach; ?>
<?php endwhile; // end of the loop. ?>


<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php
global $post;
$args = array( \'numberposts\' => 1, \'offset\'=> 4 );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post); ?>
                <span id="post-<?php the_ID(); ?>" <?php post_class(); ?>>


            <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'twentyten\' ), the_title_attribute( \'echo=0\' ) ); ?>" rel="bookmark">
                <?php the_post_thumbnail(\'large\');?>
            </a>
        </span>

<?php endforeach; ?>
<?php endwhile; // end of the loop. ?>


<?php if ( have_posts() ) while ( have_posts() ) : the_post(); ?>
<?php
global $post;
$args = array( \'numberposts\' => 1, \'offset\'=> 5 );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post); ?>
                <span id="post-<?php the_ID(); ?>" <?php post_class(); ?>>


            <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'twentyten\' ), the_title_attribute( \'echo=0\' ) ); ?>" rel="bookmark">
                <?php the_post_thumbnail(\'large\');?>
            </a>
        </span>

<?php endforeach; ?>
<?php endwhile; // end of the loop. ?>

</div>

2 个回复
最合适的回答,由SO网友:Chris_O 整理而成

为什么你要为每一篇文章运行一个全新的查询

发生的情况如下:

WordPress获取类别中的所有帖子,然后获取模板并查看循环(如果have\\u posts()等…)然后说,好的,我有这个类别的所有帖子,现在是时候展示它们了。

砰的一声暂停!!!好的,我有这些帖子,但这里有另一个问题:get\\u posts,它要求我发一篇帖子,但我已经有了这些帖子怎么办?他一定不想要他们,所以我会得到他想要的这个职位。

好的,我正在显示他想要的帖子,因为没有指定其他选项,所以我只抓取数据库中最新的帖子

对于每个新的查询和循环,都会重复此操作。

WordPress已经知道您想要的类别,不需要运行带有偏移量的get\\u posts foreach循环。

只需运行:

 <?php   if( have_posts() ) : while (have_posts() ) : the_post(); ?>
    
       <span id="post-<?php the_ID(); ?>" <?php post_class(); ?>>


            <a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( \'Permalink to %s\', \'twentyten\' ), the_title_attribute( \'echo=0\' ) ); ?>" rel="bookmark">
                <?php the_post_thumbnail(\'large\');?>
            </a>
        </span>

    
  <?php  endwhile; endif; ?>
WordPress将返回在您的每页帖子选项设置中设置的帖子数量,该设置来自url中的任何类别。无需为每个帖子创建一个完整的新查询。

SO网友:Adam

重命名cat.phploop-cat.php 然后做,

get_template_part( \'loop\', \'cat\' );
看看这是否有帮助。

也不太明白您正在尝试如何处理多个循环?由于您位于特定类别名称的类别视图中,使用one loop? 因此,循环将以降序(或升序,如果您选择的话)输出您指定的最近x数量的帖子。我这样说是因为每个循环只返回1个帖子,然后设置下一个循环,这等于\'numberposts\' => 6

结束

相关推荐

WP_LIST_CATEGORIES()排除除一个类别外的所有类别

有没有办法排除除一个类别之外的所有类别?我想显示一个类别和它的子类别作为下拉菜单,但管理员可能会添加更多的子类别,所以我不想限制他们可以放在那里的唯一ID。所以我想排除除1及其子类别之外的所有类别。wp\\u list\\u categories()是否可以这样做?