Мне нужно установить атрибуты продукта через код 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 по существу неправильно?
Я не знаю, что теперь делать. Может кто-нибудь здесь может мне помочь? Спасибо!
Попробуйте установить свой код так:
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, это может сработать =)
Судя по предоставленным вами атрибутам, кажется, что вы нацелены на неправильную таксономию, я вижу 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