Получить массив имен терминов из всего продукта для определенного атрибута продукта в Woocommerce - PullRequest
0 голосов
/ 25 ноября 2018

Я пытаюсь получить массив со всеми пользовательскими терминами для определенного атрибута продукта "Цвет" Из всех продуктов.

Это мой код функции:

// custom_terms_taxonomy function

function custom_terms_taxonomy()
{
    $custom_terms = array();
    // array with products
    $products_array = array( 'post_type' => 'product', 'posts_per_page' => -1 );

        foreach ( $products_array as $product_array ) {
        // attribute string
        $terms_array = $product_array->get_attribute( 'pa_color' );
        // array with attributes
        $terms_array = ! empty($terms_array) ? (array) explode(', ', $terms_array) : array();

        foreach ( $terms_array as $term_array ) {
              // check if the value exist aleready in array
              if (!in_array($term_array, $custom_terms)) {
              // add attributes to Custom_array
              array_push($custom_terms,$term_array);
              }
           }
        }

   return $custom_terms;
}
//output
$att_array=custom_terms_taxonomy();
print_r($att_array);

Этот скриптне работалЛюбая помощь приветствуется.

1 Ответ

0 голосов
/ 25 ноября 2018

В вашем коде есть некоторые ошибки и упущения… попробуйте следующее:

// custom_terms_taxonomy function
function custom_terms_taxonomy()
{
    $custom_terms = array();
    // array with products
    $products = wc_get_products( array( 'status' => 'publish', 'limit' => -1 ) );

    foreach ( $products as $product ) {
        // attribute string
        $terms_names = $product->get_attribute( 'pa_color' );
        // array with attributes
        $terms_names_array = ! empty($terms_names) ? (array) explode(', ', $terms_names) : array();

        foreach ( $terms_names_array as $terms_name ) {
            // check if the value exist aleready in array
            if ( !in_array( $terms_name, $custom_terms ) ) {
                // add attribute term name in the array
                $custom_terms[] = $terms_name;
            }
        }
    }

   return $custom_terms;
}

// Raw output
print_r(custom_terms_taxonomy());

Протестировано и работает.

...