Woocommerce получает атрибуты
В Woocommerce вы можете добавить глобальные атрибуты и условия продукта. Так, например:
Size (attribute)
small (term)
medium (term)
large (term)
Это независимое от продукта. Затем вы можете выбрать из предварительно определенных атрибутов продукта.
Мне нужно получить все термины в атрибуте с php. Поэтому выберите необходимый атрибут, например размер, а затем верните массив, содержащий [small,medium,large]
.
Кажется довольно простым, но я не могу найти никакой помощи в этом.
Ответы
Ответ 1
Немного запутанный, особенно при просмотре документов WooCommerce, поскольку нет абсолютно никакого упоминания о получении списка терминов/атрибутов.
Атрибуты сохраняются как пользовательская таксономия, а термины - это таксономические термины. Это означает, что вы можете использовать собственные функции Wordpress: Справочник по функциям Wordpress get_terms()
Нажав на атрибут в WooCommerce, вы можете посмотреть URL-адрес, и вы можете видеть, что все они добавлены с помощью "pa _"
Скорее всего, вам нужно:
$terms = get_terms("pa_size");
foreach ( $terms as $term ) {
echo "<option>" . $term->name . "</option>";
}
Ответ 2
Я хотел иметь возможность получить все различные атрибуты из встроенного сервера, которые были установлены, и получить их в массиве, с которым я буду работать, я взял некоторый код из файла 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;
Это будет охватывать все таксономии атрибутов, извлекать термины для каждого, оставляя вас с массивом терминных объектов для работы с каждой таксономией.
Ответ 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'], который возвращает эту функцию.