【问题标题】:Show product categories in a new column on WooCommerce "My account" orders table在 WooCommerce“我的帐户”订单表的新列中显示产品类别
【发布时间】:2021-12-07 12:13:24
【问题描述】:

我想添加一个自定义列,以在 wooCommerce 的订单历史记录表中显示产品类别

我找到了如何添加自定义列,但我似乎无法在此列中显示与订单相关联的分类产品。

对于这个例子,我只有 1 个产品,但如果我可以显示多个税款,那就更好了。

这是我发现的(来自:skyverge 博客)添加一个新列:

/**
 * Adds a new column to the "My Orders" table in the account.
 *
 * @param string[] $columns the columns in the orders table
 * @return string[] updated columns
 */
function sv_wc_add_my_account_orders_column( $columns ) {

    $new_columns = array();

    foreach ( $columns as $key => $name ) {

        $new_columns[ $key ] = $name;

        // add ship-to after order status column
        if ( 'order-number' === $key ) {
            $new_columns['order-ship-to'] = __( 'Catégorie', 'textdomain' );
        }
    }

    return $new_columns;
}
add_filter( 'woocommerce_my_account_my_orders_columns', 'sv_wc_add_my_account_orders_column' );

欢迎指点

【问题讨论】:

    标签: wordpress woocommerce product orders taxonomy-terms


    【解决方案1】:

    使用您当前的代码,您可以在现有列之间添加一列,但是缺少在列中添加内容的部分

    为此,您可以使用woocommerce_my_account_my_orders_column_{$column_id} 挂钩, 在这种特殊情况下,$column_id 需要替换为 order-category

    所以你得到:

    // Adds a new column to the "My Orders" table in the account.
    function filter_woocommerce_my_account_my_orders_columns( $columns ) {
        $new_columns = array();
    
        foreach ( $columns as $key => $column ) {
    
            $new_columns[ $key ] = $column;
    
            // Add after order number column
            if ( $key === 'order-number' ) {
                $new_columns['order-category'] = __( 'Catégorie', 'woocommerce' );
            }
        }
    
        return $new_columns;
    }
    add_filter( 'woocommerce_my_account_my_orders_columns', 'filter_woocommerce_my_account_my_orders_columns', 10, 1 );
    
    // Adds data to the custom "order-category" column in "My Account > Orders"
    function filter_woocommerce_my_account_my_orders_column_order( $order ) {
        // Initialize
        $categories = array();
        
        // Loop through order items
        foreach ( $order->get_items() as $item_key => $item ) {
            // Get product ID
            $product_id = $item->get_product_id();
            
            // Get terms
            $term_names = wp_get_post_terms( $product_id, 'product_cat', array( 'fields' => 'names' ) );
            
            // Loop through term names
            foreach ( $term_names as $term_name ) { 
                // NOT in array
                if ( ! in_array( $term_name, $categories, true ) ) {
                    // Push one or more elements onto the end of array
                    array_push( $categories, $term_name );
                }
            }
        }
        
        // NOT empty
        if ( ! empty( $categories ) ) {
            echo implode( ', ', $categories );
        }
    }
    add_action( 'woocommerce_my_account_my_orders_column_order-category', 'filter_woocommerce_my_account_my_orders_column_order', 10, 1 );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 2020-12-23
      • 2015-07-16
      • 2021-11-26
      • 2013-09-29
      • 1970-01-01
      相关资源
      最近更新 更多