WP_LOCALIZE_SCRIPT未传递数据

时间:2016-08-14 作者:iSaumya

我一直在尝试使用一个小插件,我试图通过wp_localize_script 但是当我做的时候console.log() 在我的js中,它正在返回undefined.

有人能告诉我我做错了什么吗:

$shortcode_data = array();

/*Fetching the plugin directoryt path*/
$dir = plugin_dir_url( __FILE__ );

// Let\'s create the before after shortcode First
add_shortcode(\'before_after\', function( $atts ) {
    //extracting the shortcode attributes
    global $shortcode_data;
    $shortcode_data = shortcode_atts( array(
        \'slide\' => 5, // max 7
        \'src1_org\' => null,
        \'src1_new\' => null,
        \'src2_org\' => null,
        \'src2_new\' => null
    ), $atts );

    extract($shortcode_data);

    //... do my work with the variables

});

//Let\'s include the CSS & JS scripts
add_action( \'wp_enqueue_scripts\', function() {
    global $dir;
    global $shortcode_data;

    /*CSS*/
    wp_enqueue_style( \'custom_style\', $dir . \'assets/css/custom.css\', null, null );

    /*JS*/
    wp_register_script (\'custom_script\', $dir . \'assets/js/custom.js\');
    wp_localize_script( \'custom_script\', \'ismSliderData\', $shortcode_data ); // this line supposed to send all of my shortcode variables to the js but it is not doing that
    wp_enqueue_script( \'custom_script\', true );
});
我们将非常感谢您的帮助。

1 个回复
最合适的回答,由SO网友:jgraup 整理而成

目前,您的短代码将在wp_enqueue_scripts -- 输出帖子内容时。这就是为什么脚本在wp_enqueue_scripts 对于wp_localize_script.

wp_enqueue_script( string $handle, string $src = false, array $deps = array(), string|bool|null $ver = false, bool $in_footer = false )

你会的;

A) 需要提前收集您的短代码属性。

B) 将自定义脚本放入页脚并输出<script> 短代码输出期间的数据。

C) 将自定义脚本放在页脚中,并在wp_print_footer_scripts. 您可能需要将自定义脚本包装在闭包中,以便在添加本地化后执行。

D) 在短代码期间本地化

<小时>Here 是在短代码期间本地化的一个示例:

function some_shortcode( $atts )
{
    $data = shortcode_atts(
        array (
            \'arrows\' => TRUE
        ),
        $atts
    );

    wp_enqueue_script( \'your_script_name\' );

    wp_localize_script(
        \'your_script_name\',
        \'yourScriptObject\',
        $data
    );

    return \'a string of whatever\';
}

相关推荐

致命错误:未捕获错误:无法将WP_ERROR类型的对象用作/../plugins/rm-payment.php中的数组

我使用2个WordPress站点、1个WordPress站点到2个WordPress站点的远程支付系统。第一个是主网站;第二个网站的工作方式类似于处理贝宝支付的商户网站。我们将第一个网站的用户订单详细信息提取到第二个网站,以处理贝宝付款。但在获取第二个网站的网页时出现错误,但请记住,如果重新加载它一次,问题就解决了致命错误:未捕获错误:无法将WP\\u error类型的对象用作/中的数组/插件/rm支付。php:第231行 $response = wp_remote_post( $remote_url,