WooCommerce:在管理端订单列表页面自定义列中显示 SKU 编号

WooCommerce: Display SKU number in admin side Order listing page custom column

我在 Woocommerce 管理员侧订单列表页面中添加了一个自定义列,以显示订购的商品名称和总数量,如下所示 -> [http://prntscr.com/p11rdl] 使用以下代码:

add_filter('manage_edit-shop_order_columns', 'misha_order_items_column' );
function misha_order_items_column( $order_columns ) {
    $order_columns['order_products'] = "Qty-Products Name-SKU";
    return $order_columns;
}
add_action( 'manage_shop_order_posts_custom_column' , 'misha_order_items_column_cnt' );
function misha_order_items_column_cnt( $colname ) {
  global $the_order; // the global order object
  if( $colname == 'order_products' ) {
    // get items from the order global object
    $order_items = $the_order->get_items();
    if ( !is_wp_error( $order_items ) ) {
      foreach( $order_items as $order_item ) {
        echo $order_item['quantity'] .' × <a href="' . admin_url('post.php?post=' . $order_item['product_id'] . '&action=edit' ) . '" target="_blank">'. $order_item['name'] .'</a><br />';
      }
    }
  } 
}

现在我还想在产品名称后显示订购的产品SKU编号。所以任何人对此都有解决方案,请提供帮助。

谢谢,
科坦

只需替换为以下代码片段即可添加 SKU -

add_action( 'manage_shop_order_posts_custom_column' , 'misha_order_items_column_cnt' );
function misha_order_items_column_cnt( $colname ) {
  global $the_order; // the global order object
  if( $colname == 'order_products' ) {
    // get items from the order global object
    $order_items = $the_order->get_items();
    if ( !is_wp_error( $order_items ) ) {
      foreach( $order_items as $order_item ) {
        $product = $order_item->get_product();
        // product checking
        $sku = ( $product && $product->get_sku() ) ? ' - ' . $product->get_sku() : '';
        echo $order_item['quantity'] .' × <a href="' . admin_url('post.php?post=' . $order_item['product_id'] . '&action=edit' ) . '" target="_blank">'. $order_item['name'] . '</a>'. $sku . '<br />';
      }
    }
  } 
}

非常感谢,我发现这个帖子非常有用,我非常感谢原始发帖人以及@itzmekhokan 和其他各种贡献者的帮助,这个社区很棒。

我现在需要的是在 SKU 之后直接添加产品上架位置。 我有以下位置字段代码,但不确定如何修改上面的代码以使其工作。总体而言,我是编码新手,但已经找到了代码片段并使它到目前为止可以正常工作。

非常感谢您的帮助和指导。

// Add Location field
add_action( 'woocommerce_product_options_stock_fields', 'product_shelf' ); 
function product_shelf() {
    global $woocommerce, $post;
    woocommerce_wp_text_input(
        array(
            'id'          => 'product_shelf',
            'placeholder' => 'Enter product shelf location here',
            'label'       => 'Shelf Location',
            'description' => 'Shelf location of product',
            'desc_tip'    => 'true',
        )
    );
}

// Save location data
add_action( 'woocommerce_process_product_meta', 'product_shelf_data' );
function product_shelf_data( $post_id ) {   
    // grab the location from $_POST
    $product_shelf = isset( $_POST[ 'product_shelf' ] ) ? sanitize_text_field( $_POST[ 'product_shelf' ] ) : '';

    // grab the product
    $product = wc_get_product( $post_id );

    // save the location using WooCommerce built-in functions
    $product->update_meta_data( 'product_shelf', $product_shelf_data ); 
    $product->save();   
}