所以.我试图用PHP创建一个新的订单状态,我需要新的状态来增加该订单中列出的产品的库存,当我这样做时,它不起作用,永远不会改变任何东西,即使我把它附加到WooCommerce的增加库存挂钩.
我尝试了不同的东西:
备选案文1
function wc_maybe_increase_stock_levels1() {
if (isset($_GET['action']) && $_GET['action'] === 'mark_compra_proveedor' && isset($_GET['order_id'])) {
$order_id = intval($_GET['order_id']);
$order = wc_get_order($order_id);
if (!$order) {
return;
}
$stock_reduced = $order->get_data_store()->get_stock_reduced($order_id);
$trigger_increase = (bool) $stock_reduced;
// Only continue if we're increasing stock.
if (!$trigger_increase) {
return;
}
wc_increase_stock_levels($order);
// Ensure stock is not marked as "reduced" anymore.
$order->get_data_store()->set_stock_reduced($order_id, false);
}
}
add_action('woocommerce_order_status_mark_compra_proveedor', 'wc_maybe_increase_stock_levels1');`
备选案文2
/**
* Función para sumar la cantidad de productos de un pedido al inventario cuando se guarda con el estado "wc-compra-proveedor".
*
* @param int $order_id El ID del pedido que se guarda.
*/
function sumar_al_inventario_al_guardar_pedido($order_id) {
// Obtenemos el objeto del pedido
$order = wc_get_order($order_id);
// Verificamos si el pedido tiene el estado "wc-compra-proveedor"
if ($order && $order->get_status() === 'wc-compra-proveedor') {
// Recorremos los productos en el pedido y ajustamos el inventario
foreach ($order->get_items() as $item) {
$product_id = $item->get_product_id();
$quantity = $item->get_quantity();
// Obtén la cantidad actual en inventario del producto
$current_stock = get_post_meta($product_id, '_stock', true);
// Calcula la nueva cantidad en inventario sumando la cantidad del pedido
$new_stock = $current_stock + $quantity;
// Actualiza la cantidad en inventario del producto
update_post_meta($product_id, '_stock', max(0, $new_stock)); // Aseguramos que no sea negativo
update_post_meta($product_id, '_manage_stock', 'yes'); // Habilitamos la gestión de inventario
}
}
}
// Hook para ejecutar la función al guardar un pedido
add_action('woocommerce_new_order', 'sumar_al_inventario_al_guardar_pedido');`
任何帮助都是感激不尽的。
1条答案
按热度按时间sq1bmfud1#
请尝试以下操作,这将在订单设置为“compra-proveedor”状态时增加相关产品的库存水平:
应该可以的