我想得到基于作者循环的最新帖子。这是我的密码:
function display_artist_func() {
$out_args = array(
'post_type' => 'product',
'author' => 1,
'showposts' => 3
);
$out_loop = new WP_Query($out_args);
while ($out_loop->have_posts()) :
?>
<div><?php echo get_avatar( get_the_author_email(), '80' ); ?> </div>
<?php
//$product = wc_get_product( $product->id );
$args = array(
'post_type' => 'product',
'showposts' => 10,
'orderby' => 'date',
'order' => 'DESC'
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post(); global $product;$author = get_user_by( 'id', $product->post->post_author ); ?>
<li>
<?php
if ( has_post_thumbnail( $loop->post->ID ) )
echo get_the_post_thumbnail( $loop->post->ID, 'shop_catalog' );
else
echo '<img src="' . woocommerce_placeholder_img_src() . '" alt="Placeholder" width="65px" height="115px" />';
?>
<h3><?php the_title(); ?></h3>
<h4><?php echo $author->display_name;?></h4>
<div><?php echo get_avatar( get_the_author_email(), '80' ); ?> </div>
<?php
//echo $product->get_price_html();
//woocommerce_template_loop_add_to_cart( $loop->post, $product );
?>
</li>
<?php
endwhile;
endwhile;
wp_reset_query();
}
add_shortcode( 'display_artist', 'display_artist_func' );
有两个循环:
外部循环得到3作者。
内部循环从外部循环中得到基于作者的3条帖子。
在外部循环中,想要显示作者的化身。
但是这个代码不起作用。
发布于 2020-07-06 21:19:04
您的问题是,您从未在外部循环中设置post数据。在我看来,这段代码创造了一个无穷无尽的循环?函数get_the_author_email()实际上是不推荐的,但是它所做的是使用全局$authordata。
在您的内环中,您调用:
$loop->the_post();它将接受当前的查询,为活动的post设置post数据,然后删除它,这样它就不再在调用have_posts()时返回。你错过了一个电话:
$out_loop->the_post();因此,您的后期数据没有设置,您将创建一个无休止的循环。
现在说的都是
老实说,您的代码看起来不太合理。您的“外部循环”是使用一个特定的硬编码作者ID查询产品,但外部帖子唯一的用途是获取作者电子邮件。其编写方式-作者将是相同的每一次运行的$out_loop。
所以我认为你可能还缺少一些逻辑-我不知道从你的描述中它应该如何工作,但事实上-如果你只是循环在产品,没有必要在这里的两个循环。
https://stackoverflow.com/questions/62757446
复制相似问题