2014-02-05 71 views
0

我在那里我收集的数据,然后爆炸的功能,这个功能是同时的内部,wordpress的订单号

global $woocommerce; 
global $wpdb; 
$args = array('post_type' => 'product', 'stock' => 1, 'posts_per_page' => -1); 
$loop = new WP_Query($args); 
while ($loop->have_posts()) : $loop->the_post();   
$order_id = $loop->post->ID; 
foreach($product as $sku){ 
    $sku = $product->get_sku(); 
    $sku_s = explode('-', $sku); 
    $camp = $sku_s[0]; 
    $itm_n = $sku_s[1]; 
} 

<h6><span class="a1"><?php echo $camp;?></span>-<span class="a2"><?php echo $itm_n;?></span></h6> 

我的输出
是这样

<h6><span class="a1">581</span>-<span class="a2">20</span></h6> 
<h6><span class="a1">581</span>-<span class="a2">50</span></h6> 
<h6><span class="a1">581</span>-<span class="a2">1</span></h6> 
<h6><span class="a1">581</span>-<span class="a2">6</span></h6> 
<h6><span class="a1">581</span>-<span class="a2">9</span></h6> 

581-20
581-1
581-9 ....等..

,但我需要的奥德分类编号,例如

581-1
581-6
581-9 ....等等...

感谢您帮助。

回答

0

创建一个比较功能为您的SKU即

function myComparison(a,b) { 
    a.id<b.id; 
} 

然后使用一个标准的数组排序

$skus.sort(myComparison); 

不能清楚地看到你的对象是如何布局,但我希望这有助于引导你顶部正确的答案。

+0

感谢你回答,但我哪里有这个? exacly,这个函数对我来说是新的, – Deimos

+0

我回答基于你的javascript标签,仔细检查显示你所指的代码是PHP(也被标记)。 这里有大量的PHP排序示例http://uk3.php.net/sort – rob

0

首先,这个foreach循环没有多大意义。你为什么要迭代$sku立即用$product->get_sku()覆盖它?

//what you wrote 
foreach($product as $sku){ 
    $sku = $product->get_sku(); 
    $sku_s = explode('-', $sku); 
    $camp = $sku_s[0]; 
    $itm_n = $sku_s[1]; 
} 

//did you mean this? 
foreach($products as $product){ 
    $sku = $product->get_sku(); 
    $sku_s = explode('-', $sku); 
    $camp = $sku_s[0]; 
    $itm_n = $sku_s[1]; 
} 

假设可以识别在每次迭代中被提取哪个变量(和它类似于上面的校正回路)可以尝试两件事情之一。

(1)您是否试过将orderby传递给您正在运行的WP_Queryhttp://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

(2)您需要重新为您的结果编制索引,以便您的订单基于SKU的自然排序顺序。

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

    //create a new array to hold by SKU 
    $sortProducts = array(); 

    foreach($products as $product){ 
     $sortProducts[$product->get_sku()] = $product; 
    } 

endwhile; 

//sort natural order 
ksort($sortProducts, SORT_NATURAL); 

//notice that this is a different foreach loop here 
foreach($sortProducts as $sku => $product){ 
    $sku = $product->get_sku(); 
    $sku_s = explode('-', $sku); 
    $camp = $sku_s[0]; 
    $itm_n = $sku_s[1]; 
    echo "<h6><span class=\"a1\">$camp</span>-<span class=\"a2\">$itm_n</span></h6>"; 
} 

例输出图像

CLICK

+0

我现在尝试你的代码,看起来不错,但我会检查 – Deimos

+0

全球$ woocommerce; \t \t \t global $ wpdb; (''''''''''''''''''''''''''''''''); $ loop = new WP_Query($ args); 我复制你的代码的查询,丁didst不显示任何东西? – Deimos

+0

与订单参数排序但不好,因为我的sku是581-20,581-1,581-100,而系统就像这样581-1,581-100,581-20,我想因为我需要把000付给SKU,但是我有很多产品 – Deimos