У меня есть код ниже, который создает настраиваемое поле внутри меню быстрого редактирования продукта woocommerce, которое содержит раскрывающийся список 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);
Вопросы:
Заранее спасибо за ваше время и усилия!






Вы можете попробовать изменить функцию 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» не будет работать!