2013-05-01 2 views
13

В Woocommerce вы можете добавить глобальные атрибуты и условия продукта. Так, например:woocommerce get attribute terms

Size (attribute) 
small (term) 
medium (term) 
large (term) 

Это продукт не зависит. Затем вы можете выбрать из предварительно определенных атрибутов продукта.

Мне нужно получить все термины в атрибуте с php. Поэтому выберите требуемый атрибут, например размер, а затем верните массив, содержащий [small,medium,large].

Кажется достаточно простым, но я не могу найти никакой помощи в этом.

ответ

22

Немного запутанно, особенно при просмотре документов WooCommerce, поскольку нет абсолютно никакого упоминания о получении списка терминов/атрибутов.

Атрибуты сохраняются как пользовательская таксономия, а термины - это таксономические условия. Это означает, что вы можете использовать встроенные функции Wordpress: Wordpress get_terms() Function Reference

При нажатии на атрибут в WooCommerce, вы можете посмотреть в URL, и вы можете видеть, все они предваряются «PA_»

Это, вероятно, что вам нужно :

$terms = get_terms("pa_size"); 
foreach ($terms as $term) { 
echo "<option>" . $term->name . "</option>"; 
} 
+0

Это правильный ответ. –

+0

Как это можно считать? – huykon225

3

Я использую это:

echo '<h1>variations</h1>'; 
mario($product->get_available_variations()); 
echo '<h1>Atributos</h1>'; 
mario($product->get_attributes()); 
echo '<h1>Poste Terms</h1>'; 
mario(wp_get_post_terms($post->ID, 'pa_color')); 


function mario($texto){ 
    echo '<pre>';var_dump($texto);echo '</pre>'; 
}; 

Действительно с: "wp_get_post_terms ($ post-> ID, 'pa_color')" я искать только один член, б Идея состоит в том, чтобы зацикливать ключ ['name'], который возвращает эту функцию.

+0

Благодарю вас за ответ, это было действительно полезно. –

10

Я хотел, чтобы иметь возможность получить все различные атрибуты из созданного бэкэнда и получить их в массиве, с которым я буду работать, я взял некоторый код из файла class-wc-admin-attributes.php и изменить его для моих потребностей:

$attribute_taxonomies = wc_get_attribute_taxonomies(); 
$taxonomy_terms = array(); 

if ($attribute_taxonomies) : 
    foreach ($attribute_taxonomies as $tax) : 
    if (taxonomy_exists(wc_attribute_taxonomy_name($tax->attribute_name))) : 
     $taxonomy_terms[$tax->attribute_name] = get_terms(wc_attribute_taxonomy_name($tax->attribute_name), 'orderby=name&hide_empty=0'); 
    endif; 
endforeach; 
endif; 

var_dump($taxonomy_terms); 

exit; 

Это будет цикл через все таксономии атрибутов, получить условия для каждого, оставив вас с массивом доношенных объектов для работы с каждой таксономией.

+0

спасибо за этот код :) – jack