php - 检查并显示 Woocommerce 中具有 SKU 的所有订单商品

标签 php wordpress woocommerce product orders

在 Woocommerce > 管理 > 订单屏幕中显示 SKU 的自定义脚本存在问题。我似乎无法向 sku 展示

尝试

        switch ( $column )
    {
  case 'my_custom_column' :
  $the_sku = get_post_meta( $post_id, '_sku' )

然后,如果该商品没有 SKU,我会使用类似的方法(为我自己)显示错误消息。

if(!empty($the_sku)) {
     echo "<a href=''><div class='order_div'>SKU is".$the_sku."</div></a>";
} else {
    echo "<a href=''><div class='order_div'>NO SKU</div></a>";
}

但是好像不行。它甚至不会回显 SKU(如果存在)。所以我有点卡住了。理想情况下,我尝试检查订单中的每个商品(一个订单可能附加多个商品)是否都有自己的 SKU。

如果不存在 SKU,订单列中会显示错误。非常欢迎任何帮助。

最佳答案

Sku 与订单无关,而是与订单商品(产品)相关,并且一个订单可以有很多商品,因此您需要使用不同的东西。

以下代码将获取并检查订单商品以获取 SKU,如果有产品没有 SKU,则会显示缺少的 SKU 计数:

switch ( $column ) {
    case 'my_custom_column' :

        // Get the WC_Order instance object
        $order = wc_get_order( $post_id );
        $has_sku = false;
        $skus = [];
        $missing = 0;

        // Loop through order items
        foreach( $order->get_items() as $item ){
            // Get the WC_Product object (from order item)
            $product = $item->get_product();

            if( $sku = $product->get_sku() ) {
                $has_sku = true;
                $skus[] = $sku;
            } else {
                $missing++;
            }
        }

然后:

echo '<a href=""><div class="order_div">';

if ( $has_sku ) {
    echo __( "SKUs: %s") . ' ' . implode( ', ', $skus );
} else {
    echo __( "NO SKU" );
}

// Display missing SKUs count (optionally)
if( $missing > 0 ){
    echo ' <em>(' . $missing . ' missing)</em>';
}

echo '</div></a>';

现在应该可以工作了。

关于php - 检查并显示 Woocommerce 中具有 SKU 的所有订单商品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53560527/

相关文章:

php - 如何确保脚本在执行前完全执行?

php - 在 Woocommerce 中将 Avada Catalog 排序 Hook 覆盖回默认值

wordpress - 将 CSS 类添加到具有(或基于)产品类别的 WooCommerce 购物车项目

PHP、PDO 和异常

php - 无法导入大文件 PHP excel

php - 将 PHP PDO 查询编写为 `dbName` .`tableName` 而不是 `tableName` - 为什么?

mysql - Woocommerce 通过自定义查询获取产品

php - 如何以编程方式获取/设置产品价格?

html - 桌面 : Horizontal picture/content, 智能手机:垂直图片/内容

css - 由于产品标题,商店产品未对齐