我试图将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);
我是以错误的方式来做这件事的吗?跳出看起来不正确的东西吗?感谢。
答案 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