SQL 查询以更改 WooCommerce 中所有产品的延期交货状态

SQL query to change backorder status of all products in WooCommerce

在 WooCommerce 中,您可以更改产品的状态以允许延期交货,默认设置为 'not allowed'。我的商店里有数千种产品,我不想手动更改所有产品。 是否有 SQL 查询可以直接在数据库中为我执行此操作?

在 mySql

中尝试 运行 这个查询
 UPDATE wp_postmeta SET  meta_value = 'yes' WHERE meta_key = '_backorders';

这还不足以达到您的目的。还需要启用管理库存。

如果 WooCommerce 允许延期交货全局设置未启用,请尝试 运行 此查询。

UPDATE wp_postmeta SET  meta_value = 'yes' WHERE meta_key = '_manage_stock';

还需要更新库存数量

UPDATE wp_postmeta SET  meta_value = 1000 WHERE meta_key = '_stock';

库存情况

UPDATE wp_postmeta SET  meta_value = 'instock' WHERE meta_key = '_stock_status';

我正在处理可变产品,因此我还需要执行以下查询:

UPDATE wp_postmeta SET meta_value = 'onbackorder' WHERE meta_key = '_stock_status';

这是工作。

$product = SELECT * FROM `wpuk_posts` WHERE `post_type` = 'product';
foreach( $product as $pro){       
  $checknotify = SELECT * FROM `wpuk_postmeta` WHERE `post_id` = '$pro->ID' AND `meta_key` = '_stock_status';
        
  if (empty($checknotify)) {
     INSERT INTO `wpuk_postmeta`(`post_id`, `meta_key`, `meta_value`) VALUES ('$pro->ID','_stock_status','onbackorder');
  } else {
     UPDATE `wp_postmeta` SET meta_value = 'onbackorder' WHERE `post_id` = '$pro->ID' AND `meta_key` = '_stock_status';
  }
 }

UPDATE `wp_postmeta` SET meta_value = 'yes' WHERE `meta_key` = '_manage_stock';

用于通知

$product = SELECT * FROM `wpuk_posts` WHERE `post_type` = 'product'; // Optional
foreach( $product as $pro){   
$checknotify = SELECT * FROM `wpuk_postmeta` WHERE `post_id` = '$pro->ID' AND `meta_key` = '_backorders';

if (empty($checknotify)) {
    INSERT INTO `wpuk_postmeta`(`post_id`, `meta_key`, `meta_value`) VALUES ('$pro->ID','_backorders','notify');
} else {
    UPDATE `wp_postmeta` SET `meta_value` = '_backorders' WHERE `post_id` = '$pro->ID' AND `meta_key` = 'notify';
}
}

如果您想自动编辑插件代码。

我试过了,成功了。

Woocommerce 股票编辑文件.. /wp-content/plugins/woocommerce/includes/admin/meta-boxes/class-wc-meta-box-product-data.php

更新它:

    'manage_stock'       => "yes",
    'backorders'         => "notify",
    'stock_status'       => "onbackorder",

Like Image