在 WooCommerce 中以编程方式设置运输设置

问题描述

我使用 wordpress 插件来通过 API 管理 woocommerce。我尝试设置运费。 我可以添加区域并使用以下代码指定运输方式:

$new_zone_shipping  =   new WC_Shipping_Zone();
$new_zone_shipping  ->  set_zone_name("Giza");
$new_zone_shipping  ->  add_location('EG:EGGZ','state');
$new_zone_shipping  ->  add_shipping_method('flat_rate');
$new_zone_shipping  ->  save();

现在我只用于 flat_rate。 固定成本的可能简单方法

解决方法

我在 WordPress 数据库上搜索后解决了这个问题。

WC_Shipping_Zone 方法 add_shipping_method() 返回运输方法实例 ID。

此实例 ID 在 wp_woocommerce_shipping_zones 表中抓取并用于 option_name 数据库表的 wp_options 列中,例如 woocommerce_flat_rate_1_settings, 其中,flat_rate 是配送方式 ID (slug)1 是配送方式实例 ID。

所以工作代码是:

$zone_name     = 'Giza';
$country_state = 'EG:EGGZ';
$method_id     = 'flat_rate';
$shipping_cost = 22;

$new_zone_shipping = new WC_Shipping_Zone();
$new_zone_shipping->set_zone_name( $zone_name );
$new_zone_shipping->add_location( $country_state,'state' );

$instance_id = $new_zone_shipping->add_shipping_method( $method_id );

$new_zone_shipping->save();

add_option( 'woocommerce_'. $method_id .'_'. $instance_id .'_settings',array(
    'title'      => $method_id,'tax_status' => 'taxable','cost'       => $cost
),'','yes' );

重要说明:不要忘记清理所有数据值,因为这只是一个简单的例子。