gpt4 book ai didi

php - 创建自己的 Wordpress 循环的最佳方法是什么?

转载 作者:可可西里 更新时间:2023-11-01 12:34:00 25 4
gpt4 key购买 nike

使用内置函数从 Wordpress 输出内容似乎有三种主要方式,推荐使用 WP_Query 方式:

它们之间有什么区别? (我理解WP_Query是类,另外两个是方法)。

在同一页面上有多个循环且没有任何一个相互干扰的最干净的方法是什么?

我正在寻找有关如何编写 WP 循环程序的示例;例如按类别输出 2 个单独的帖子列表,包括附件、元数据等。

这是迄今为止我找到的最好的引用资料:

最佳答案

我同时使用了 WP_Query 和 get_posts。在我的侧边栏模板之一上,我使用以下循环显示来自特定类别的帖子,方法是使用键为“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_Query 实现如下所示:

$blog_posts = new WP_Query( 'showposts=15' );

while ( $blog_posts->have_posts() ) : $blog_posts->the_post(); ?>

<div <?php post_class() ?> id="post-<?php the_ID(); ?>" class="blog_post">
<div class="title">
<h2>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a>
</h2>
<span class="date"><?php the_time( 'F jS, Y' ) ?> <!-- by <?php the_author() ?> --></span>
</div>
<div class="entry">
<?php the_content(); ?>
</div>
<p class="postmetadata"><?php the_tags( 'Tags: ', ', ', '<br />' ); ?> Posted in <?php the_category(', ') ?> | <?php edit_post_link('Edit', '', ' | '); ?> <?php comments_popup_link('No Comments &#187;', '1 Comment &#187;', '% Comments &#187;'); ?></p>
</div>

<?php endwhile; ?>

主要区别在于您不必重置全局 $post 变量,也不必在使用 WP_query 时通过在每个帖子对象上调用 setup_postdata($post) 来设置帖子数据。您还可以在 WP_Query 函数上使用可爱的 have_posts() 函数,使用 get_posts() 则无法使用。

您不应该使用 query_posts() 函数,除非您真的有意这样做,因为它会修改页面的主循环。查看docs .因此,如果您正在构建一个特殊页面来显示您的博客,那么调用 query_posts 可能会打乱页面循环,因此您应该使用 WP_Query。

那只是我的两分钱。我的最终建议是,您的首选应该是 WP_Query。

-克里斯

关于php - 创建自己的 Wordpress 循环的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/570152/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com