我正在尝试构建一个类别的自定义视图,我想让所有的帖子都在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>
最合适的回答,由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中的任何类别。无需为每个帖子创建一个完整的新查询。