Php 创建自己的Wordpress循环的最佳方法是什么?
使用Wordpress的内置功能从Wordpress输出内容似乎有三种主要方式,推荐使用Php 创建自己的Wordpress循环的最佳方法是什么?,php,wordpress,loops,Php,Wordpress,Loops,使用Wordpress的内置功能从Wordpress输出内容似乎有三种主要方式,推荐使用WP\u Query: 它们之间有什么区别?(我知道WP\u Query是类,另外两个是方法) 在同一页上有多个循环,而不相互干扰的最干净的方法是什么 我正在寻找如何编程WP循环的示例; e、 g.按类别输出2个单独的帖子列表,包括附件、元数据等 这是迄今为止我找到的最好的参考资料: 来自获取帖子的WP文档: get_posts()还可以采用query_posts()可以采用的参数,因为这两个函
WP\u Query
:
WP\u Query
是类,另外两个是方法)
在同一页上有多个循环,而不相互干扰的最干净的方法是什么
我正在寻找如何编程WP循环的示例;
e、 g.按类别输出2个单独的帖子列表,包括附件、元数据等
这是迄今为止我找到的最好的参考资料:
创建第二个循环将在中介绍。这里有一些链接可用于多个循环的其他示例。你会注意到每个人的做法都不一样,但他们似乎都对自己的结果感到满意 我使用了WP\u查询和get\u帖子。在我的一个侧边栏模板上,我使用下面的循环来显示来自特定类别的帖子,方法是使用自定义字段,其键为“category_to_load”,其中包含类别slug或类别名称。真正的区别在于两种方法的实现 在我的一些模板中,get_posts方法看起来是这样的:
<?php
global $post;
$blog_posts = get_posts( $q_string );
foreach( $blog_posts as $post ) :
setup_postdata( $post );
?>
<div class="blog_post">
<div class="title">
<h2>
<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
</h2>
<span class="date"><?php the_time( 'F j, Y' ); ?> by <?php the_author(); ?></span>
</div>
<?php the_excerpt(); ?>
</div>
<?php endforeach;
?>
主要区别在于,使用WP_查询时,不必重置全局$post变量,也不必通过调用每个post对象上的setup_postdata($post)来设置post数据。您还可以在WP_查询函数上使用have_posts()函数,该函数在使用get_posts()时不可用
除非您真的想使用query_posts()函数,否则不应该使用它,因为它会修改页面的主循环。看。因此,如果您正在构建一个特殊页面来显示您的博客,那么调用query\u posts可能会打乱页面的循环,因此您应该使用WP\u query
那只是我的两分钱。我的最终建议是,你的第一选择应该是WP_Query
-ChrisWP使用名为
$WP\u query
的对象作为主循环。我们通常看不到这个对象,因为它隐藏在只为
$wp\u query->have\u posts()
和$wp\u query->the\u post()
如果要修改主循环,应在循环之前使用query\u posts()
如果需要另一个循环,可以在新循环之前使用query\u posts()
重新利用$wp\u query
对象。如果需要,可以多次执行此操作
如果出于某种原因需要保留$wp_query对象,则应使用wp_query
。当然,因为have_posts()
和the_post()
是$wp\u query
对象的包装,所以不能将它们与wp\u query
一起使用。您应该使用$your\u query\u obj->have\u posts()
即
$sidebar= WP_Query('category_name= sidebar');
while( $sidebar->have_posts() ): $sidebar->the_post();
the_title();
the_content();
endwhile;
WP\u Query
可能优于Query\u posts()
的一个好例子是左侧边栏。
由于侧边栏的代码循环可能会放在主循环的顶部,因此query\u posts()
调用将更改$wp\u query
对象,并更改主循环。在这种情况下,要在边栏代码处使用query\u posts()
,您还需要在主循环之前使用query\u posts()
,以查询该循环的正确内容
因此,在本例中使用WP_Query将保持$WP_Query,因此主循环保持不变
但是,对于一个常见的场景,query\u posts()
query_posts('category_name=blog');
while( have_posts() ): the_post();
the_title();
the_content();
endwhile;
您将如何访问post子项(附件、修订版等)。这是一个单独的查询吗?您可以使用get\u children()函数:。或者您可以使用wp_list_pages-wp_list_pages('title_li=&child_of='.$post->ID.&show_date=modified&date_format=$date_format');?>:如果你想要一份清单-C
query_posts('category_name=blog');
while( have_posts() ): the_post();
the_title();
the_content();
endwhile;