我到处找了找,还没能找到一个确切的解决方案来解决我要做的事情。
我有this basic JavaScript slider from w3c 一次显示一张幻灯片的。我试图让每张幻灯片显示循环中特定类别的不同帖子。幻灯片#1应包含最近发表的文章,幻灯片#2应包含第二篇,幻灯片#3应包含第三篇。
这是我现在看到的内容,但它只显示每张幻灯片中的第一篇帖子:
<div class="slideshow-container">
<div class="mySlides fade">
<div class="numbertext">1 / 3</div>
<?php
query_posts("current_post=0&showposts=1&cat=1"); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
<?the_post_thumbnail( \'large\' ); ?>
</a>
<div class="text"><?php the_title(); ?></div>
<?php endwhile; else : ?>
<p><?php _e( \'Sorry, no posts matched your criteria.\' ); ?></p>
<?php endif; ?>
<?php wp_reset_query(); ?>
<?php rewind_posts(); ?>
</div>
<div class="mySlides fade">
<div class="numbertext">2 / 3</div>
<<?php query_posts("current_post=1&showposts=1&cat=1"); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
<?the_post_thumbnail( \'large\' ); ?>
</a>
<div class="text"><?php the_title(); ?></div>
<?php endwhile; else : ?>
<p><?php _e( \'Sorry, no posts matched your criteria.\' ); ?></p>
<?php endif; ?>
<?php wp_reset_query(); ?>
<?php rewind_posts(); ?>
</div>
<div class="mySlides fade">
<div class="numbertext">3 / 3</div>
<<?php query_posts("current_post=2&showposts=1&cat=1"); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
<?the_post_thumbnail( \'large\' ); ?>
</a>
<div class="text"><?php the_title(); ?></div>
<?php endwhile; else : ?>
<p><?php _e( \'Sorry, no posts matched your criteria.\' ); ?></p>
<?php endif; ?>
<?php wp_reset_query(); ?>
<?php rewind_posts(); ?>
</div>
<a class="prev" onclick="plusSlides(-1)">❮</a>
<a class="next" onclick="plusSlides(1)">❯</a>
</div>
我希望在没有插件的情况下完成这项工作,这样我的客户端就可以勾选“特色”类别,并将帖子显示在那里。
非常感谢。
最合适的回答,由SO网友:Xhynk 整理而成
您应该使用WP_Query()
而不是query\\u帖子。您也不需要为每个查询循环使用单独的查询。只需对特色类别使用WP\\u查询,将其限制为3篇帖子,就可以了。它不一定经过优化,但我将其与您的代码示例拼凑在一起。
这应该让您开始:
<?php
$per_page = 3;
$slideshow_query = new WP_Query( array(
\'cat\' => 1,
\'posts_per_page\' => $per_page,
) );
if( $slideshow_query->have_posts() ){
echo \'<div class="slideshow-container">\';
while ( $slideshow_query->have_posts() ) {
$slideshow_query->the_post(); ?>
<div class="mySlides fade">
<div class="numbertext"><?= $slideshow_query->current_post + 1; ?> / <?= $per_page ?></div>
<a href="<?php the_permalink(); ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>">
<?php the_post_thumbnail( \'large\' ); ?>
</a>
<div class="text"><?php the_title(); ?></div>
</div>
<?php } ?>
<a class="prev" onclick="plusSlides(-1)">❮</a>
<a class="next" onclick="plusSlides(1)">❯</a>\';
</div>
<?php } else {
_e( \'Sorry, no posts matched your criteria.\' );
}
?>
更新:根据最近的编辑,应该注意
<?= $slideshow_query->current_post + 1; ?> / <?= $per_page ?>
是的
functionally equivalent 到
<?php echo $slideshow_query->current_post + 1; ?> / <?php echo $per_page ?>
<?=
被称为
Short Echo Tag