在 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/