首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >WooCommerce从所有订单获取项目元数据

WooCommerce从所有订单获取项目元数据
EN

Stack Overflow用户
提问于 2014-07-02 01:23:08
回答 2查看 12.6K关注 0票数 4

我试图显示来自WooCommerce插件的所有已完成订单的所有订单项目(与项目元)。我还想限制显示在10个订单项目只。我已经知道如何显示所有订单项目,但不能将数量限制为10。以下是我当前用于显示所有订单项目的代码:

代码语言:javascript
复制
$args = array(
                    'post_type' => 'shop_order',
                    'post_status' => 'publish',
                    'posts_per_page' => -1,
                    'tax_query' => array(
                        array(
                            'taxonomy' => 'shop_order_status',
                            'field' => 'slug',
                            'terms' => array('completed')
                        )
                    )
                );

                $loop = new WP_Query( $args );

                while ( $loop->have_posts() ) : $loop->the_post();
                    $order_id = $loop->post->ID;
                    $order = new WC_Order($order_id);

                    foreach( $order->get_items() as $item ) {   

                        $date = $item['Booking Date'];
                        $time = $item['Booking Time'];
                        $fname = $item['First Name - First Name'];
                        $church = $item['Church Information - Church Name'];
                        $city = $item['Church Information - City'];
                        $state = $item['Church Information - State'];
                    ?>

                        <div class="wc-upcoming-booking">
                            <div class="wc-upcoming-time">
                                <span class="upcoming-hour"><?php echo $time; ?></span>
                                <span class="upcoming-date"><?php echo $date; ?></span>
                            </div>
                            <div class="wc-upcoming-details">
                                <?php echo $fname . ', ' . $church . ', ' . $city . ', ' . $state; ?>
                            </div>
                        </div>

                    <?php }

                endwhile;

此代码查询所有已完成的订单,然后循环每个查询的订单的所有订单项。一些订单可能有一个以上的订单项目,所以如果我限制每页的帖子10,所有这些订单有5个订单项目,那么我将有总共50个订单项目显示。我尝试在foreach循环中添加一个"iterate“变量来限制这一点,但它只循环遍历一个订单的"5”个订单项,而不是总共“50个”订单项。

首先,我需要按照strtotime和$time变量(我相信我可以通过使用$date ()函数将它们转换为时间戳来实现)对所有订购项进行排序。

其次,我想只显示来自所有订单的前10个订单项目(基于时间戳)。

你知道如何修改这段代码来实现这一点吗?

EN

回答 2

Stack Overflow用户

发布于 2015-04-10 13:40:38

类似这样的内容应该会将显示的项目数量限制为10:

代码语言:javascript
复制
<?php
$args = array(
    'post_type' => 'shop_order',
    'post_status' => 'publish',
    'posts_per_page' => 10,
    'tax_query' => array(
        array(
            'taxonomy' => 'shop_order_status',
            'field' => 'slug',
            'terms' => array('completed')
        )
    )
);
$orders=get_posts($args);
$i=0;
foreach($orders as $o):
    if($i>10){
        break;
    }
    $order_id = $o->ID;
    $order = new WC_Order($order_id);
    foreach( $order->get_items() as $item ):
        if($i>10){
            break;
        }
        $i++;
        $date = $item['Booking Date'];
        $time = $item['Booking Time'];
        $fname = $item['First Name - First Name'];
        $church = $item['Church Information - Church Name'];
        $city = $item['Church Information - City'];
        $state = $item['Church Information - State'];
    ?>
        <div class="wc-upcoming-booking">
            <div class="wc-upcoming-time">
                <span class="upcoming-hour"><?php echo $time; ?></span>
                <span class="upcoming-date"><?php echo $date; ?></span>
            </div>
            <div class="wc-upcoming-details">
                <?php echo $fname . ', ' . $church . ', ' . $city . ', ' . $state; ?>
            </div>
        </div>
    <?php endforeach;
endforeach;?>

如果我理解你要找的东西是正确的,这应该可以解决这个问题。

票数 1
EN

Stack Overflow用户

发布于 2015-04-24 21:20:40

我不认为wordpress为你提供了这种类型的查询。您必须构建自己的逻辑才能做到这一点。希望这能帮到你。

代码语言:javascript
复制
$args = array(
   'post_type' => 'shop_order',
   'post_status' => 'publish',
   'posts_per_page' => -1,
   'tax_query' => array(
       array(
            'taxonomy' => 'shop_order_status',
            'field' => 'slug',
            'terms' => array('completed')
            )
          )
   );

         $count = 0;
         $loop = new WP_Query( $args );

            while ( $loop->have_posts() ) : $loop->the_post();
                $order_id = $loop->post->ID;
                $order = new WC_Order($order_id);

                foreach( $order->get_items() as $item ) {   

                    if( $count > 10){
                       break 2; //break both loops 
                    } 
                    $count++;
                    $date = $item['Booking Date'];
                    $time = $item['Booking Time'];
                    $fname = $item['First Name - First Name'];
                    $church = $item['Church Information - Church Name'];
                    $city = $item['Church Information - City'];
                    $state = $item['Church Information - State'];
                ?>

                    <div class="wc-upcoming-booking">
                        <div class="wc-upcoming-time">
                            <span class="upcoming-hour"><?php echo $time; ?></span>
                            <span class="upcoming-date"><?php echo $date; ?></span>
                        </div>
                        <div class="wc-upcoming-details">
                            <?php echo $fname . ', ' . $church . ', ' . $city . ', ' . $state; ?>
                        </div>
                    </div>

                <?php }

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

https://stackoverflow.com/questions/24516046

复制
相关文章

相似问题

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