Wordpress поиск / создание атрибута назначить затем поиск / добавить значение - PullRequest
0 голосов
/ 21 октября 2019

Я создаю плагин WordPress для API. Я получаю продукты, и для каждого продукта я получаю и массив атрибутов с name и value . Я пытался что-то, но это, похоже, ничего не делает.

foreach($product->attributes as $attribute) {
    $slug = 'pa_' . strtolower($attribute->name);
    $attribute_value = $attribute->value;

    $thedata = [
        $slug => [
            'name'=> $slug, 
            'value'=> $attribute_value,
            'is_visible' => '1',
            'is_variation' => '1',
            'is_taxonomy' => '1'
        ]
    ];

    update_post_meta( $product_id, '_product_attributes', $thedata);
}

Я предполагаю, что я должен искать (или добавить, если не существует) и атрибут, а затем сделать то же самое дляЗначение. Я не уверен.

Факты: - Все остальное в скрипте работает, и да - приходит $ product, а $ product_id содержит идентификатор продукта, который был создан чуть выше в скрипте.

1 Ответ

0 голосов
/ 21 октября 2019

Если вы установите значение только в post_meta, вы не сможете увидеть атрибуты на экране редактирования продукта. Попробуйте добавить wp_set_object_terms к вашему foreach

foreach($product->attributes as $attribute) {
    $slug = 'pa_' . strtolower($attribute->name);
    $attribute_value = $attribute->value;

    wp_set_object_terms($post_id, attribute->value, $attribute->name, true);  

    $thedata = [
        $slug => [
            'name'=> $slug, 
            'value'=> $attribute_value,
            'is_visible' => '1',
            'is_variation' => '1',
            'is_taxonomy' => '1'
        ]
    ];

    update_post_meta( $product_id, '_product_attributes', $thedata);
}

. На SO есть пост об этом .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...