wp_localize_script在jQuery中返回undefined

时间:2015-01-20 18:55:37

标签: php jquery wordpress

我试图将WordPress短代码属性作为变量传递给jQuery,但它在jQuery中继续作为undefined返回。具有短代码功能的所有内容都按预期工作,除了返回为undefined的属性之外,jQuery也是如此。 jQuery脚本也正常排队。

这是我的PHP函数的开始:

function aw_simple_sorter_creator($atts) {

extract(shortcode_atts(array(   
    'show_posts' => '-1',
    'effect' => ''
), $atts, 'aw_simple_sorter' ));

wp_enqueue_script('aw_simple_sorter_js', plugin_dir_url( __FILE__ ) . 'js/aw_simple_sorter.js');
wp_localize_script('aw_simple_sorter_js', 'aw_ss_script_vars', array(
        'jQueryUIeffect' => __($effect),
    )
);

在上面的代码段中,$effect应该等于短代码属性。 shortcode属性也有值。我还尝试了'jQueryUIeffect' => $effect,而不是'jQueryUIeffect' => __($effect),,但它仍然在jQuery中返回undefined

然后在我的jQuery中,我尝试使用包含在.ready()中的以下内容来测试传递的变量:

alert(aw_ss_script_vars.jQueryUIeffct);

我是以错误的方式来做这件事的吗?跳出看起来不正确的东西吗?感谢。

1 个答案:

答案 0 :(得分:0)

首先应该更改你的注册队列,然后传递jquery依赖。

如果您在上面的评论中提到的页面上输出了脚本,则问题可能在于您尝试访问变量的方式。

function do_scripts()
{   

    /* register the script */
    wp_register_script( 'custom', plugin_dir_url( __FILE__ )  . '/js/scripts.js', array('jquery'), false, true );
    $script_vars = array(
        'key' => $value
        ... your values here....
    );

    /* actually enqueue jquery (that ships with WP) and your custom script */
    wp_enqueue_script( 'jquery' );
    wp_enqueue_script( 'custom' );

    /* Localize the vairables */
    wp_localize_script('custom', 'script_vars', $script_vars);

}

/* If we're not in the admin section call our function on the wp_enqueue_scripts hook  */
if ( !is_admin() ) add_action( "wp_enqueue_scripts", "do_scripts", 10 );

查看变量是否可用,在Google Chrome开发者工具中打开您的控制台并输入script_vars

在您的脚本中,您应该能够使用点表示法访问您的值,如下所示:

script_vars.yourKey