当我们在同一页面中有多个循环时,哪个是最佳解决方案?我正在使用主循环:
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<?php endwhile; endif; ?>
现在我想在同一页面(在不同的位置)为特定类别名称中的精选帖子添加一个新循环,这是您的最佳选择:(“内容”仅作为示例)
1-使用get_posts();
<?php global $post;
$args = array( 'category_name' => 'destaques' );
$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post); ?>
"content"
<?php endforeach; ?>
2-使用WP_Query();
<php $my_query = new WP_Query("category_name=destaques");
while ($my_query->have_posts()) : $my_query->the_post(); ?>
"content"
<?php endwhile; ?>
3:使用query_posts();
<?php query_posts( 'category_name=destaques' );
if (have_posts()) : while (have_posts()) : the_post(); ?>
"content"
<?php endwhile; endif; ?>
您选择哪个以及为什么?
感谢。
答案 0 :(得分:3)
最佳选择是get_posts();
以下是Wordpress Function Reference for query posts:
的推理query_posts()函数是预期的 用于修改主页面 只循环。它不打算作为一个 意味着在上创建二级循环 页。如果要创建单独的 在主要的一个之外循环,你 应该使用get_posts()代替。用于 query_posts()在除了之外的循环上 主要的一个可以导致你的主循环 变得不正确,可能 展示你不是的东西 期待。
query_posts()函数覆盖 并替换了主要查询 页。为了节省您的理智,请不要使用 它用于任何其他目的。
query_posts()函数创建一个 新的WP_Query对象并将其分配给 全局wp_query变量。该 get_posts()函数创建一个新的 WP_Query对象没有覆盖 全球范围内的任何事情。
答案 1 :(得分:0)
我不确定别人,但我经常选择
<?php
query_posts('showposts=1&cat=-48'); // our custom query
if ( have_posts() ) : while ( have_posts() ) : the_post(); // Start the loop
$img = get_post_meta($post->ID, "postimage", $single = true);//any custom fields?
?>
<a href="<?php the_permalink() ?>" title="Permanent Link to <?php the_title(); ?>">
<img src="<?php echo $img; ?>" alt="<?php the_title(); ?>" />
</a>
<?php
endwhile; endif;// End the Loop and Check for Posts
wp_reset_query(); // Reset the loop
?>
<div>stuff</div>
<?php
query_posts('showposts=5&cat=5'); // our custom query
if ( have_posts() ) : while ( have_posts() ) : the_post(); // Start the loop
$img = get_post_meta($post->ID, "postimage", $single = true);//any custom fields?
?>
<h2>Title</h2>
etc..etc..
<?php
endwhile; endif;// End the Loop and Check for Posts
wp_reset_query(); // Reset the loop
?>
这证明可以满足我的需求......
答案 2 :(得分:0)
我使用数字3.它更容易阅读和理解。