【问题标题】:Returning and Compiling MYSQL data for WooCommerce Product Orders为 WooCommerce 产品订单返回和编译 MYSQL 数据
【发布时间】:2014-09-10 17:33:53
【问题描述】:

我想要实现的是一种基于已下订单中的商品 sku 搜索我们的 woocommerce 订单的方法。一旦搜索了一个 sku,它将显示所有订单中的所有项目,其中包含搜索查询的 sku,并提供有关它的数据。

我已经很接近了,但不确定这里出了什么问题。

搜索代码:

<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

非常感谢!

【问题讨论】:

    标签: php mysql wordpress woocommerce


    【解决方案1】:

    您无需针对其中的任何内容运行自定义 mySQL 查询。像这样放弃你的数据库信用并不酷。

    首先,您在 Wordpress/WooCommerce 中运行查询似乎有点落后。有一个名为 WC_Order 的类可以让您根据需要提取数据。

    $order = new WC_Order('3003');
    

    这会返回一个对象,我们可以对它进行各种巧妙的操作——特别是获取订单商品。

    $items = $order->get_items();
    

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

    倾斜数据将与产品相关联,而不是与订单或订单项元数据相关联。根据安装的扩展程序,在创建订单时,可能会或可能不会将偏斜等信息添加到订单项元数据中。获得它的可靠方法是运行一个函数以根据订单项的 prodcut ID 获取 post-meta 数据。

    //  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。希望这会有所帮助。

    【讨论】:

    • 上传产品,在 ShortDiscrip 中 HTML 表格不显示表格 (WC REST API) 'print_r( $client->products->create( array( 'short_description'=>
      品牌 : 后件
      产​​品名称 td> : 尼罗河-台上盆
      产​​品说明 : 台面洗脸盆
      产​​品颜色 : StarwhiteIvory
      ') ) ) ;`
    猜你喜欢
    • 2019-10-14
    • 2015-07-16
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 2021-12-06
    • 2014-05-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多