将属性列添加到WooCommerce管理产品列表

时间:2020-03-05 16:30:48

标签: php wordpress woocommerce backend product

我在Wordpress论坛上从某人那里获得了代码,但这不太正确。

它在我的产品管理员中创建了一个名为Attributes的列,并输入了属性名称,但未输入选项。即看起来像

  • “ coloursizeyearcountry”

我想

  • “颜色=红色,大小=大,年份= 2020,国家=英国”

或类似的东西。

到目前为止,我的代码是:

function add_product_column( $columns ) {
    //add column
    $columns['new_column'] = __( 'New column', 'woocommerce' );

    return $columns;
}
add_filter( 'manage_edit-product_columns', 'add_product_column', 10, 1 );

function add_product_column_content( $column, $postid ) {
    if ( $column == 'new_column' ) {
        // Get product object
        $product = wc_get_product( $postid );
        
        // Get Product Variations
        $product_attributes = $product->get_attributes();
        
        foreach ( $product_attributes as $product_attribute ) {
            $attribute_name = $product_attribute->get_name();
            
            echo str_replace( 'pa_', '', $attribute_name );
        }
    }
}
add_action( 'manage_product_posts_custom_column', 'add_product_column_content', 10, 2 );

1 个答案:

答案 0 :(得分:0)

以下代码将帮助您获得所需的内容。通过代码中添加的注释标签进行解释

function add_product_column( $columns ) {
    //add column
    $columns['new_column'] = __( 'New column', 'woocommerce' );

    return $columns;
}
add_filter( 'manage_edit-product_columns', 'add_product_column', 10, 1 );

function add_product_column_content( $column, $postid ) {
    if ( $column == 'new_column' ) {

        // output variable
        $output = '';

        // Get product object
        $product = wc_get_product( $postid );

        // Get Product Variations - WC_Product_Attribute Object
        $product_attributes = $product->get_attributes();

        // Not empty, contains values
        if ( !empty( $product_attributes ) ) {

            foreach ( $product_attributes as $product_attribute ) {
                // Get name
                $attribute_name = str_replace( 'pa_', '', $product_attribute->get_name() );

                // Concatenate
                $output = $attribute_name . ' = ';

                // Get options
                $attribute_options = $product_attribute->get_options();

                // Not empty, contains values
                if ( !empty( $attribute_options ) ) {

                    foreach ($attribute_options as $key => $attribute_option ) {
                        // WP_Term Object
                        $term = get_term($attribute_option); // <-- your term ID

                        // Not empty, contains values
                        if ( !empty( $term ) ) {
                            $term_name = $term->name;

                            // Not empty
                            if ( $term_name != '' ) {

                                // Last loop
                                end($attribute_options);
                                if ( $key === key($attribute_options) ) {
                                    // Concatenate
                                    $output .= $term_name;                                  
                                } else {
                                    // Concatenate
                                    $output .= $term_name . ', ';
                                }
                            }
                        }
                    }
                }

                echo $output . '<br>';
            }
        }
    }
}
add_action( 'manage_product_posts_custom_column', 'add_product_column_content', 10, 2 );

Result