自定义脚本存在问题,无法在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,则会在“订单”列中显示错误。任何帮助都非常欢迎。
答案 0 :(得分:3)
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>';
现在应该可以工作。