WooCommerce: выдайте атрибуты настроек с помощью wp_set_object_terms

Мне нужно установить атрибуты продукта через код PHP.
Согласно другим потокам в StackOverflow, есть метод wp_set_object_terms. К сожалению, это не работает так, как предполагается в моем случае:

Например, есть атрибут с именем «Hersteller», слаг «hersteller».
И есть продукт, ID 593, без установленного атрибута «hersteller».

Я попытался следующий код, чтобы заполнить атрибут:

wp_set_object_terms(593, 'Alpina', 'pa_hersteller' , false);

Когда я пытаюсь отобразить атрибут на странице продукта, нет вывода, поэтому кажется, что процесс wp_set_object_terms не был успешным.
Следующий код выдает пустой вывод:

$product->get_attribute('hersteller');

Более того, атрибут «hersteller» даже не указан в списке атрибутов в меню администратора бэкенда.

Чтобы устранить проблему, я также попробовал следующий код:

$attributes = get_post_meta( 593,  '_product_attributes' );
print_r($attributes);

в результате получается следующий результат:

Array ( [0] => Array ( [pa_marken] => Array ( [name] => pa_marken [value] => [position] => 0 [is_visible] => 1 [is_variation] => 0 [is_taxonomy] => 1 ) [pa_kategorien] => Array ( [name] => pa_kategorien [value] => [position] => 1 [is_visible] => 1 [is_variation] => 0 [is_taxonomy] => 1 ) [pa_referenznummer] => Array ( [name] => pa_referenznummer [value] => [position] => 2 [is_visible] => 1 [is_variation] => 0 [is_taxonomy] => 1 ) [pa_herstellergarantie] => Array ( [name] => pa_herstellergarantie [value] => [position] => 3 [is_visible] => 1 [is_variation] => 0 [is_taxonomy] => 1 ) [pa_schlagwoerter] => Array ( [name] => pa_schlagwoerter [value] => [position] => 4 [is_visible] => 1 [is_variation] => 0 [is_taxonomy] => 1 ) [pa_lieferzeit] => Array ( [name] => pa_lieferzeit [value] => [position] => 5 [is_visible] => 1 [is_variation] => 0 [is_taxonomy] => 1 ) ) )

Я использую метод wp_set_object_terms по существу неправильно?
Я не знаю, что теперь делать. Может кто-нибудь здесь может мне помочь? Спасибо!

1

Решение

Попробуйте установить свой код так:

wp_set_object_terms(593, 'Alpina', 'pa_hersteller' , true);

И попробуй еще раз.

Согласно функции в WordPress Codex

<?php wp_set_object_terms( $object_id, $terms, $taxonomy, $append ); ?>

$ Append (bool) (необязательно) Если true, теги будут добавлены к
объект. Если false, теги заменят существующие теги (по умолчанию: False)

Так что если вы измените $ append на true, это может сработать =)

1

Другие решения

Судя по предоставленным вами атрибутам, кажется, что вы нацелены на неправильную таксономию, я вижу pa_herstellergarantieв следующем выводе:

Array ( .....
[pa_herstellergarantie] => Array (
[name] => pa_herstellergarantie
[value] =>
[position] => 3
[is_visible] => 1
[is_variation] => 0
[is_taxonomy] => 1 )......

Измените свой код на:

wp_set_object_terms(593, 'Alpina', 'pa_herstellergarantie' , false);

Также примечание, чтобы сказать, что wp_set_object_terms не будет создавать таксономию.
Если таксономия не существует, она Invalid taxonomy сообщение об ошибке.

Если pa_herstellergarantie а также pa_hersteller 2 отдельных таксономии, а затем убедитесь, что pa_hersteller существует перед использованием wp_set_object_terms

0

По вопросам рекламы [email protected]