首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在wordpress中如何在另一个循环中获得post循环

问在wordpress中如何在另一个循环中获得post循环
EN

Stack Overflow用户
提问于 2020-07-06 13:45:31
回答 1查看 61关注 0票数 0

我想得到基于作者循环的最新帖子。这是我的密码:

​

代码语言:javascript
复制
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条帖子。

在外部循环中,想要显示作者的化身。

但是这个代码不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-06 21:19:04

您的问题是,您从未在外部循环中设置post数据。在我看来,这段代码创造了一个无穷无尽的循环?函数get_the_author_email()实际上是不推荐的,但是它所做的是使用全局$authordata。

在您的内环中,您调用:

代码语言:javascript
复制
$loop->the_post();

它将接受当前的查询,为活动的post设置post数据,然后删除它,这样它就不再在调用have_posts()时返回。你错过了一个电话:

代码语言:javascript
复制
$out_loop->the_post();

因此,您的后期数据没有设置,您将创建一个无休止的循环。

现在说的都是

老实说,您的代码看起来不太合理。您的“外部循环”是使用一个特定的硬编码作者ID查询产品,但外部帖子唯一的用途是获取作者电子邮件。其编写方式-作者将是相同的每一次运行的$out_loop。

所以我认为你可能还缺少一些逻辑-我不知道从你的描述中它应该如何工作,但事实上-如果你只是循环在产品,没有必要在这里的两个循环。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62757446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档