В настоящее время я работаю над проектом WordPress с использованием WooCommerce, и мне нужна действительно конкретная функция (не включенная в WooCommerce) :
Как увеличить запас, когда заказ будет завершен, а не уменьшить его?
До сих пор я нашел, что мне может понадобиться использовать API Woocommerce для выполнения этого WC_AJAX::increase_order_item_stock();
, Тем не менее мне не очень удобно использовать сложный PHP …
Есть ли у вас какие-то мысли, чтобы это сделать?
Может быть, с помощью плагина (которого я не нашел)? Или с сырым кодом?
Подводя итог всему: хочу создать веб-сайт для ресторана с управлением запасами и возможностью для поваров заказывать товары у разных поставщиков. Поэтому, когда повар заказывает что-то с страницы магазина woocommerce, инвентарь приобретенных предметов должен увеличиваться и не уменьшаться.
Я пробовал разные вещи, такие как «WC Vendors» или «Marketplace», но без успеха …
Благодарю.
Вы можете попробовать эту настраиваемую функцию, подключенную в woocommerce_order_status_completed
action hook, которая увеличит количество каждого товара с количеством элементов этого заказа, когда статус установлен на завершенное :
add_action( 'woocommerce_order_status_completed', 'action_on_order_completed' , 10, 1 ); function action_on_order_completed( $order_id ) { // Get an instance of the order object $order = wc_get_order( $order_id ); // Iterating though each order items foreach ( $order->get_items() as $item_id => $item_values ) { // Item quantity $item_qty = $item_values['qty']; // getting the product ID (Simple and variable products) $product_id = $item_values['variation_id']; if( $product_id == 0 || empty($product_id) ) $product_id = $item_values['product_id']; // Get an instance of the product object $product = wc_get_product( $product_id ); // Get the stock quantity of the product $product_stock = $product->get_stock_quantity(); // Increase back the stock quantity wc_update_product_stock( $product, $item_qty, 'increase' ); } }
Код работает с простыми или переменными продуктами, которые имеют собственное управление запасами. Возможно, вам может понадобиться внести некоторые изменения в зависимости от ваших настроек WooCommerce. Это всего лишь пример, который дает вам идею, способ …
Код идет в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.
Этот код не выдает ошибок в WooCommerce версии 2.6.x и должен работать.