You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在WooCommerce插件中访问Settings数组及配置值?

WooCommerce插件设置项访问问题解答

一、代码逻辑解释

你看到的$settings数组被覆盖是正常设计逻辑,以下是这段代码的实际作用:

  1. 类AutocompleteOrdersWooSetting核心功能:通过WooCommerce钩子注册自定义结账设置分区及字段
    • 构造函数注册两个关键钩子:
      • woocommerce_get_sections_checkout:在WooCommerce结账设置页面添加新的分区标签
      • woocommerce_get_settings_checkout:渲染自定义分区内的具体设置字段
    • AcoAutocompleteOrdersaddSection方法:向结账设置的分区列表中添加「Autocomplete Orders」分区
    • AcoAutocompleteOrdersSetting方法:
      • 当当前访问的是自定义的aco_autocomplete_orders分区时,重置$settings数组——这是为了清空其他分区的字段,只显示我们自定义的设置项
      • 依次添加各类设置字段:分区标题、「Virtual Products Only」复选框、支付网关对应复选框、SKU过滤文本框、订单状态转换下拉选单等
      • 添加分区结束标记后返回自定义的$settings数组;如果是其他分区,则直接返回原$settings数组,不影响原有设置

二、获取配置值并在主脚本中使用的方法

WooCommerce会自动将设置项的值存储到WordPress的选项表中,每个设置项的id就是对应的选项名称,直接使用WordPress内置函数get_option()即可获取:

单个配置值获取示例

  • 获取「Virtual Products Only」复选框的值:get_option('aco_vpo')(选中时返回yes,未选中返回false或空值)
  • 获取SKU过滤文本框的值:get_option('aco_exsku')
  • 获取「change Processing to」下拉选单的值:get_option('aco_processing')

main.php中使用示例

// 确保WooCommerce已加载后再获取设置
if (class_exists('WooCommerce')) {
    // 获取虚拟产品仅启用设置
    $virtual_only = get_option('aco_vpo');
    if ($virtual_only === 'yes') {
        // 执行对应业务逻辑
    }

    // 获取SKU过滤规则
    $ex_sku_rule = get_option('aco_exsku');
    if (!empty($ex_sku_rule)) {
        // 基于SKU规则处理订单逻辑
    }

    // 获取Processing状态转换目标
    $processing_target = get_option('aco_processing');
    if (!empty($processing_target)) {
        // 执行订单状态转换逻辑
    }
}

注意:确保在调用get_option()时,WordPress的初始化流程已完成,可将逻辑放在plugins_loaded或woocommerce_init钩子中执行,避免在插件文件最顶部直接调用

内容的提问来源于stack exchange,提问作者KalebSmith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 23:32:03