在 WooCommerce "My account" 订单 table 中添加产品 SKU

Add product SKU in WooCommerce "My account" orders table

目前,这是 woocommerce 订单 table 总栏下的文本。 (10 件商品的 GHS 5.00)


我想显示订单中产品的 SKU。所以 10 个 SKU.

应该是 GHS 5.00

我已将网站设置为您一次不能购买超过一种产品。


我使用这个能够更改文本的片段,但我无法显示产品 SKU

add_filter('ngettext', 'remove_item_count_from_my_account_orders', 105, 3 );
function remove_item_count_from_my_account_orders( $translated, $text, $domain ) {
    switch ( $text ) {
        case '%1$s for %2$s item' :
            $translated = '%1$s';
            break;

        case '%1$s for %2$s items' :
            $translated = '%1$s';
            break;
    }
    return $translated;
}

有什么建议吗?

如果你想从总计栏中覆盖文本,又想添加某些值(例如sku),你将不得不覆盖现有栏。

这可以通过 woocommerce_my_account_my_orders_column_{$column_id} 挂钩完成。

所以你得到:

// Overwrite the existing 'order-total' column
function filter_woocommerce_my_account_my_orders_column_order_total( $order ) {
    // Empty array
    $product_skus = array();

    // Loop through order items
    foreach( $order->get_items() as $item ) {
        // Get an instance of corresponding the WC_Product object
        $product = $item->get_product();
        
        // Get product SKU
        $product_sku = $product->get_sku();
    
        // NOT empty
        if ( ! empty ( $product_sku ) ) {
            // Push to array
            $product_skus[] = $product_sku;
        }
    }
    
    // Get item count
    $item_count = $order->get_item_count() - $order->get_item_count_refunded();
    
    // translators: 1: formatted order total 2: total order items
    echo wp_kses_post( sprintf( _n( '%1$s for %2$s ', '%1$s for %2$s ', $item_count, 'woocommerce' ) . implode( ", ", $product_skus ), $order->get_formatted_order_total(), $item_count ) );
}
add_action( 'woocommerce_my_account_my_orders_column_order-total', 'filter_woocommerce_my_account_my_orders_column_order_total', 10, 1 );