我对setup_postdata()
. 据我所知,如果我想使用the_permalink()
或the_title()
, 我必须使用setup_postdata()
.
马上the_permalink()
或the_title()
正在返回nothing(空白)。我也试过了echo get_the_title()
看看会发生什么,但即使这样也会产生同样的结果。
以下是与问题相关的代码:
$posts = get_posts($args);
foreach($posts as $post) {
setup_postdata($post);
?>
<article class="col two tablet-four mobile-six box">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<div class="featured-image">
<?php if(has_post_thumbnail(get_the_ID())): ?>
<?php $image = wp_get_attachment_image_src(get_post_thumbnail_id(get_the_ID()), array(650,200)); ?>
<div style="background: url(\'<?php echo $image[0]; ?>\') center center no-repeat;"></div>
<?php endif; ?>
</div>
<section class="content">
<?php $cat = get_the_category(get_the_ID()); ?>
<span class="category"><?php echo $cat[0]->cat_name; ?></span>
<?php the_title(); ?>
<?php the_excerpt(); ?>
</section>
</a>
</article>
<? }
wp_reset_postdata();
因此,基本上,这段代码位于一个函数中,该函数是AJAX请求的回调函数。该函数获取下一组帖子,模拟某人单击下一页按钮。
之后get_posts()
这个$posts
变量由适当的帖子填充,所以它得到了一些东西。
现在,它只响应没有数据的标记。
谢谢
最合适的回答,由SO网友:1fixdotio 整理而成
根据Codex, 你似乎跳过了最重要的global $post;
一开始,就像这样:
global $post;
$posts = get_posts($args);
foreach($posts as $post) {
setup_postdata($post);
?>
<article class="col two tablet-four mobile-six box">
<a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>">
<div class="featured-image">
<?php if(has_post_thumbnail(get_the_ID())): ?>
<?php $image = wp_get_attachment_image_src(get_post_thumbnail_id(get_the_ID()), array(650,200)); ?>
<div style="background: url(\'<?php echo $image[0]; ?>\') center center no-repeat;"></div>
<?php endif; ?>
</div>
<section class="content">
<?php $cat = get_the_category(get_the_ID()); ?>
<span class="category"><?php echo $cat[0]->cat_name; ?></span>
<?php the_title(); ?>
<?php the_excerpt(); ?>
</section>
</a>
</article>
<? }
wp_reset_postdata();