Intereting Posts
Автоматическое добавление атрибутов ширины и высоты в теги <img> с помощью функции PHP Сообщение на PHP, основанное на пользователе, имело прикрепленный файл или не прикрепляло файл (часть 2) Как переопределить метод CActiveDataProvider, чтобы показать CGridview в порядке убывания по умолчанию в Yii Как преобразовать html в doc в php CodeIgniter большая партия вставки PHP-скрипт для извлечения исполнителя и заголовка из потока Shoutcast / Icecast Штрих-код в Ajax Время работы сеанса Zend Framework 2 Не помогает ли доступная форма входа в систему сдерживать ботов? Laravel 5.1 – сводная таблица между тремя таблицами, лучший вариант? PHP: разделение даты и времени на значение timestamp в mysql Как сгенерировать json с помощью php? Проблема с зашифровкой и расшифровкой слова docx-файла в php cURL действует очень странно Как застегнуть 100 мб файлов во время (до) загрузки, чтобы скорость загрузки могла быть увеличена?

Добавить продажную цену программно к вариациям продукта

Мне нужно обновить продажную цену программно, на переменном продукте и на всех его вариантах.

Какую мета-область мне нужно добавить?

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

update_post_meta($post_id, '_regular_price', '100'); update_post_meta($post_id, '_price', '50'); update_post_meta($post_id, '_sale_price', '50'); 

и затем я обновляю все варианты

 update_post_meta($variation_id, '_regular_price', '100'); update_post_meta($variation_id, '_price', '50'); update_post_meta($variation_id, '_sale_price', '50'); update_post_meta($variation_id, 'attribute_pa_taglia', $term_slug); update_post_meta($variation_id, '_stock', $stock); update_post_meta($variation_id, '_stock_status', 'instock'); update_post_meta($variation_id, '_manage_stock', 'yes'); 

Задняя часть: деталь продукта, все в порядке введите описание изображения здесь

Однако бэкэнд (список продуктов) и интерфейс получают мне старую цену

введите описание изображения здесь

Обновление: цены также кэшируются в преходящей таблице wp_options .

Скажем, ваш идентификатор продукта 222 , у вас будет этот переходный meta_keys в таблице wp_options (для этого идентификатора продукта):

 '_transient_timeout_wc_product_children_22' '_transient_wc_product_children_22' '_transient_timeout_wc_var_prices_222' // <=== <=== HERE '_transient_wc_var_prices_222' // <=== <=== <=== HERE 

То, что вы можете попытаться сделать, – обновить дату истечения срока действия meta_value до устаревшей метки времени, таким образом:

 // Set here your product ID $main_product_id = 222 $transcient_product_meta_key = '_transient_wc_var_prices_'. $main_product_id; update_option( $transcient_product_meta_key, strtotime("-12 hours") ); wp_cache_delete ( 'alloptions', 'options' ); // Refresh caches 

Таким образом, вы заставите систему перестроить этот устаревший кэшированный переходный процесс.


Кроме того, вы должны попытаться добавить / обновить свой родительский идентификатор продукта (основной продукт, в котором установлены варианты):

 // Set here your Main product ID (for example the last variation ID of your product) $post_id = 22; // Set here your variation ID (for example the last variation ID of your product) $variation_id = 24; // Here your Regular price $reg_price = 100; // Here your Sale price $sale_price = 50; update_post_meta($post_id, '_min_variation_price', $sale_price); update_post_meta($post_id, '_max_variation_price', $sale_price); update_post_meta($post_id, '_min_variation_regular_price', $reg_price); update_post_meta($post_id, '_max_variation_regular_price', $reg_price); update_post_meta($post_id, '_min_variation_sale_price', $sale_price); update_post_meta($post_id, '_max_variation_sale_price', $sale_price); update_post_meta($post_id, '_min_price_variation_id', $variation_id); update_post_meta($post_id, '_max_price_variation_id', $variation_id); update_post_meta($post_id, '_min_regular_price_variation_id', $variation_id); update_post_meta($post_id, '_max_regular_price_variation_id', $variation_id); update_post_meta($post_id, '_min_sale_price_variation_id', $variation_id); update_post_meta($post_id, '_max_sale_price_variation_id', $variation_id); 

Кроме того, я нашел другое решение, которое работает так же:

 $product_variable = new WC_Product_Variable($post_id); $product_variable->sync($post_id); wc_delete_product_transients($post_id);