0

我在 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 编号。所以任何人都有解决方案然后请帮助我。

谢谢你,
凯坦

4

2 回答 2

3

只需替换为以下代码片段即可添加 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 />';
      }
    }
  } 
}
于 2019-09-03T06:40:16.350 回答
0

非常感谢,我发现这个帖子非常有帮助,我非常感谢原始海报以及来自@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();   
}
于 2020-03-16T03:47:54.743 回答