Добавление столбца Атрибуты на страницу администратора продукта - PullRequest
1 голос
/ 05 марта 2020

Мне дали код от кого-то на форуме Wordpress, но это не совсем верно. Он создал в моем администраторе продукта столбец с именем «Атрибуты», и в нем вводятся имена атрибутов, но не параметров. то есть это выглядит как "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 голосов
/ 05 марта 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' ) {

        // 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...