我试图显示来自WooCommerce插件的所有已完成订单的所有订单项目(与项目元)。我还想限制显示在10个订单项目只。我已经知道如何显示所有订单项目,但不能将数量限制为10。以下是我当前用于显示所有订单项目的代码:
$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个订单项目(基于时间戳)。
你知道如何修改这段代码来实现这一点吗?
发布于 2015-04-10 13:40:38
类似这样的内容应该会将显示的项目数量限制为10:
<?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;?>
如果我理解你要找的东西是正确的,这应该可以解决这个问题。
发布于 2015-04-24 21:20:40
我不认为wordpress为你提供了这种类型的查询。您必须构建自己的逻辑才能做到这一点。希望这能帮到你。
$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;
https://stackoverflow.com/questions/24516046
复制相似问题