2014-09-10 30 views
1

我试图实现的一种方式是根据所有订单中的物料SKU搜索我们的woocommerce订单。搜索到sku后,它将显示所有包含搜索查询的skus的订单中的所有项目,并会提供有关它的数据。为WooCommerce产品订单返回并编译MYSQL数据

我已经非常接近,但不知道这里出了什么问题。

搜索代码:

<form action="url.php" method="get"> 
Order Number <input type="text" name="orderNumber" /><br /> 
<form action="url.php" method="get"> 
SKU <input type="text" name="itemSku" /><br /> 
<input type="submit" /> 
</form> 

这里是代码,这是目前唯一通过搜索的MySQL数据库,并从该共用一个排的两个表的数据组合“ORDER_ITEM_ID返回基于订单号项目设置“:

<?php 
$search_ordernumber = $_GET["orderNumber"]; 
$search_sku = $_GET["itemSku"]; 
$con=mysqli_connect("****","****","****","****"); 
// Check connection 
if (mysqli_connect_errno()) { 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 

echo "<table border='1'> 
<tr> 
<th>Order ID</th> 
<th>Item</th> 
<th>OIK</th> 
<th>Quantity</th> 
<th>Tax Class</th> 
<th>Product ID</th> 
<th>Variation ID</th> 
<th>Subtotal</th> 
<th>Tax</th> 
<th>Subtotal Tax</th> 
<th>Color</th> 
<th>Size</th> 
</tr>"; 

$moreresult = mysqli_query($con,"SELECT * 
FROM wp_woocommerce_order_items AS t1 
INNER JOIN wp_woocommerce_order_itemmeta AS t2 ON t1.order_item_id = t2.order_item_id WHERE order_id='$search_ordernumber'"); 
while($rows = mysqli_fetch_array($moreresult)) { 
echo "<tr>"; 
echo "<td>" . $rows['order_id'] . "</td>"; 
echo "<td>" . $rows['order_item_name'] . "</td>"; 
echo "<td>" . $rows['order_item_id'] . "</td>"; 
//echo "<td>" . $rows['meta_key'] . "</td>"; 
echo "<td>" . $rows['meta_value'] . "</td>"; 
echo "</tr>"; 
} 

echo "</table>"; 
mysqli_close($con); 
?> 

,这里是一个订单号搜索的电流给定结果‘3003’,你可以看到它是重复每个项目作为新行(这似乎就可以复制一个基础,以引起每个项目的每个meta_value的新行):http://tinyurl.com/npml5jn

非常感谢你!

回答

0

您不需要针对任何这种情况运行自定义的mySQL查询。放弃你的数据库信誉,就像这不是很酷。

首先,你似乎在Wordpress/WooCommerce中运行查询有点落后。有一个叫做WC_Order的类,它可以让你根据需要查看数据。

$order = new WC_Order('3003'); 

这返回一个对象,我们可以做各种整洁的事情 - 特别是,获得订单项目。

$items = $order->get_items(); 

这将返回按此顺序购买的所有商品/产品的数组。

偏斜数据将与产品相关联,而不是订单或订单项元数据。根据安装的扩展名,创建订单时,可能会或可能不会将诸如倾斜等信息添加到订单项目元。一个可靠的解决方法是运行一个函数,根据订单项的产品ID获取后期元数据。

// The '&' symbol allows us to store data back to the array 
foreach ($items as &$item) : 

    $productID = $item['product_id']; 

    //get an array of all the 
    $sku = get_post_meta($productID, 'sku', true); 

    $item['sku'] = array('productID' => $productID, 'sku' => $sku); 

endforeach; 

然后,您可以遍历$items以显示您需要的内容。

<table> 
    <tr> 
     <th>Product ID</th> 
     <th>SKU</th> 
    </tr> 
<?php foreach($items as $item) : ?> 
    <tr> 
     <td><?php echo $item['product_id']; ?></td> 
     <td><?php echo $item['sku']; ?></td> 
    </tr> 
<?php endforeach; ?> 
</table> 

如果您尝试访问Wordpress插件之外的主题数据,我会查看WooCommerce REST API。希望这可以帮助。

+0

上传产品,在ShortDiscrip中,HTML表格不显示表格(WC REST API)'print_r($ client-> products-> create(array('short_description'=>

​​品牌​​: Hindware​​产品名称​​:尼罗河 - 台上盆​​产品说明​​:台式洗手盆​​产品颜色​​: StarwhiteIvory
“)));' – 2015-09-05 12:30:27

+0

......做什么呢? – Plummer 2015-09-07 06:55:59

相关问题