WordPress 多循环

发布于 2024-10-17 12:13:51 字数 979 浏览 2 评论 0原文

当我们在同一页面中有多个循环时,哪个是最佳解决方案?我正在使用这个主循环:

<?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; ?>

您选择哪一个以及为什么?

谢谢。

Which is the best solution when we have multiple loops in the same page? I am using for the main loop this:

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

<?php endwhile; endif; ?>

Now i am trying to add a new loop in the same page (in a different location) for featured posts in a specific category name, which is for you the best choice: ("content" is just for example)

1- Use 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- Use WP_Query();

<php $my_query = new WP_Query("category_name=destaques");
while ($my_query->have_posts()) : $my_query->the_post(); ?>

   "content"

<?php endwhile; ?>

3: Use query_posts();

<?php query_posts( 'category_name=destaques' );
if (have_posts()) : while (have_posts()) : the_post(); ?> 

   "content"

<?php endwhile; endif; ?>

Which you choose and why?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

暖阳 2024-10-24 12:13:51

最佳选择是 get_posts();

以下是 Wordpress 函数参考中的推理查询帖子

query_posts() 函数的目的是
用于修改主页
仅循环。它的目的不是作为
意味着在
页。如果您想创建单独的
在主循环之外循环,你
应该使用 get_posts() 代替。使用
query_posts() 在除循环之外的循环上
main 可以导致你的主循环
变得不正确并且可能
展示你不属于的东西
期待。

query_posts() 函数覆盖
并替换主查询
页。为了保存您的理智,请勿使用
用于任何其他目的。

query_posts() 函数创建一个
新的 WP_Query 对象并将其分配给
全局 wp_query 变量。这
get_posts() 函数创建一个新的
WP_Query 对象,无需覆盖
全球范围内的任何事物。

The optimal choice is get_posts();

Here is the reasoning from the Wordpress Function Reference for query posts:

The query_posts() function is intended
to be used to modify the main page
loop only. It is not intended as a
means to create secondary loops on the
page. If you want to create separate
Loops outside of the main one, you
should use get_posts() instead. Use of
query_posts() on loops other than the
main one can result in your main loop
becoming incorrect and possibly
displaying things that you were not
expecting.

The query_posts() function overrides
and replaces the main query for the
page. To save your sanity, do not use
it for any other purpose.

The query_posts() function creates a
new WP_Query object and assign it to
global wp_query variable. The
get_posts() function creates a new
WP_Query object without overriding
anything in the global area.

羞稚 2024-10-24 12:13:51

我不确定其他人的情况,但我的选择通常是或不是,

<?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
?>

这证明它可以很好地满足我的需求......

Im not sure about others but my choice is most often or not

<?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
?>

this proves to work fine for my needs...

离旧人 2024-10-24 12:13:51

我会使用数字 3。它更容易阅读和理解。

I'd use number 3. It's easier to read and understand.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文