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

WordPress中PHP Notice: WP_Scripts::localize调用错误修复求助

修复WP_Scripts::localize调用错误的方案

问题根源

  1. 参数类型不符合要求:wp_localize_script强制要求第三个参数为关联数组,但你的代码直接传入了get_option返回的单个值(大概率是布尔值true/false),触发参数错误提示。
  2. 调用时机错误:在短码函数内部调用wp_localize_script,短码执行时机通常晚于脚本输出阶段,导致函数调用时脚本未完成注册/排队,触发调用逻辑错误。

具体修复步骤

步骤1:修正wp_localize_script的参数格式

将单个值包装为关联数组,满足函数参数要求:

// 原错误代码
wp_localize_script('catalog-all-js', 'catalog_disable_right_click', get_option('product_catalog_disable_right_click'));

// 修改后代码
wp_localize_script('catalog-all-js', 'catalog_disable_right_click', array(
    'disable' => get_option('product_catalog_disable_right_click', false)
));

修改后前端可通过catalog_disable_right_click.disable获取开关值。

步骤2:调整调用时机,移出短码函数

短码仅负责内容渲染,脚本本地化操作需放到wp_enqueue_scripts钩子中执行,确保脚本已完成注册/排队。

清理短码函数中的错误调用

移除两个短码函数内的wp_localize_script代码,修改后的短码函数如下:

第一个短码函数:

function origincode_products_list_shotrcode($atts) {
    extract(shortcode_atts(array(
        'id' => 'no origin_code catalog',
    ), $atts));

    return origincode_products_list($atts['id']);
}
add_shortcode('origin_code_catalog', 'origincode_products_list_shotrcode');

第二个短码函数:

function origin_code_catalog_single_product_shotrcode($atts) {
    extract(shortcode_atts(array(
        'id' => 'no origin_code catalog',
    ), $atts));

    return origin_code_catalog_single_product($atts['id']);
}
add_shortcode('origin_code_catalog_single_product', 'origin_code_catalog_single_product_shotrcode');

添加脚本本地化的钩子函数

在插件文件的合适位置(如插件主文件开头)添加以下代码:

function catalog_enqueue_localize_scripts() {
    // 先验证目标脚本是否已注册/排队
    if (wp_script_is('catalog-all-js', 'registered') || wp_script_is('catalog-all-js', 'enqueued')) {
        wp_localize_script('catalog-all-js', 'catalog_disable_right_click', array(
            'disable' => get_option('product_catalog_disable_right_click', false)
        ));
    }
}
add_action('wp_enqueue_scripts', 'catalog_enqueue_localize_scripts');

步骤3:同步调整前端JS逻辑(可选)

如果原插件JS代码直接使用catalog_disable_right_click变量,需同步修改为catalog_disable_right_click.disable,确保功能正常运行。

额外适配说明

若catalog-all-js是在短码触发时才排队的脚本,可将钩子优先级设为11,确保本地化操作在脚本排队后执行:

add_action('wp_enqueue_scripts', 'catalog_enqueue_localize_scripts', 11);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 14:23:11