Как обновить значение атрибута продукта woocommerce со значением, выбранным в пользовательском поле в интерфейсе меню быстрого редактирования продукта?

У меня есть код ниже, который создает настраиваемое поле внутри меню быстрого редактирования продукта woocommerce, которое содержит раскрывающийся список html со всеми значениями из атрибута «Бренд».

  • Фотография атрибута Бренда:

  • Фотография пользовательского выпадающего HTML-кода в меню быстрого редактирования (выделено красным):

Проблема:

Если я уже установил хотя бы одно значение атрибута бренда в бэкэнде продукта, тогда код работает должным образом и добавляет значение, которое я выбрал в раскрывающемся списке из быстрого меню, иначе, если я еще не установил значение для атрибута бренда в продукт, который я быстро редактирую, после обновления меню быстрого редактирования значение не отображается в бэкэнде продукта.


Код:

Это код, который у меня есть в functions.php темы:

function my_quick_edit_save_function($post_id) {
    if (isset($_REQUEST['post_ID']) == $post_id) {
        // Retrieve the selected brand value from the quick edit form
        $selected_brand = isset($_REQUEST['my_brand']) ? sanitize_text_field($_REQUEST['my_brand']) : '';

        $product_id = $post_id; // Replace with the actual product ID
        $attribute_slug = 'pa_brand'; // Replace with the desired attribute slug

        // Assign the color attribute value to the product
        wp_set_object_terms($product_id, $value, $attribute_slug, true);
    }
}

add_action('save_post', 'my_quick_edit_save_function');

function my_custom_quick_edit_fields() {

    $taxonomy = 'pa_brand'; // Replace with the actual taxonomy name of the attribute

    $terms = get_terms(array(
        'taxonomy' => $taxonomy,
        'hide_empty' => false,
    ));

    if (!empty($terms)) {
        echo '<select name = "my_brand">';
        echo '<option value = "my_brand">' . __('Select Brand', 'woocommerce') . '</option>';

        foreach ($terms as $term) {
            echo '<option value = "' . $term->slug . '">' . $term->name . '</option>';
        }

        echo '</select>';
    }
}

add_action('woocommerce_product_quick_edit_end', 'my_custom_quick_edit_fields', 10);

Вопросы:

  • Как я могу изменить этот код, чтобы он добавлял значение, которое я выбрал в пользовательском раскрывающемся списке в меню быстрого редактирования, даже если я еще не установил никаких значений для атрибута бренда в бэкэнде продукта?

Заранее спасибо за ваше время и усилия!

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
60
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете попробовать изменить функцию my_quick_edit_save, заменив код внутри $_REQUEST if следующим:

wp_set_object_terms( $post_id, $selected_brand, $attribute_slug, true );

        $att_var = Array($attribute_slug =>Array(
               'name'=>$attribute_slug,
               'value'=>$selected_brand,
               'is_visible' => '1',
               'is_taxonomy' => '1'
             ));

        update_post_meta( $post_id, '_product_attributes', $att_var );

Убедитесь, что слаг атрибута в разделе АТРИБУТЫ woocommerce имеет значение «бренд», иначе слаг таксономии «pa_brand» не будет работать!

Другие вопросы по теме