使用wp_localize_script传递值时为什么jquery选项不起作用?

时间:2014-08-16 14:59:39

标签: jquery wordpress wordpress-plugin

我正在开发一个wordpress插件,当使用wp_localize_script将值传递给jquery时,我遇到了一个问题。这是我的代码

 function newsbox_load_custom_script() {

$newsbox_parameters = array(
'newsPerPage' => 4 ,
'newsTickerInterval' => 2500
);
wp_enqueue_script('newsbox-custom-script', plugins_url( '/scripts/custom.js', __FILE__ ),'', '1.0.1', true);
wp_localize_script('newsbox-custom-script', 'newsbox_parameters',$newsbox_parameters);


}
 add_action('wp_enqueue_scripts', 'newsbox_load_custom_script');

这是jquery代码

    jQuery(document).ready(function(){

      jQuery(".news_list").bootstrapNews({
         newsPerPage: newsbox_parameters.newsPerPage,
         autoplay: true,
         pauseOnHover: true,
         navigation: false,
         direction: 'down',
         newsTickerInterval: newsbox_parameters.newsTickerInterval,
         onToDo: function () {
            //console.log(this);
         }
      });
  });

如果我像

那样写jquery
    jQuery(document).ready(function(){

      jQuery(".news_list").bootstrapNews({
         newsPerPage: 4,
         autoplay: true,
         pauseOnHover: true,
         navigation: false,
         direction: 'down',
         newsTickerInterval: 2500,
         onToDo: function () {
            //console.log(this);
         }
      });
  });

然后它完美地运作。 http://digitalsensebd.com/newsbox/

但是如果我使用wp_localize_script传递值,则它无效http://digitalsensebd.com/newsbox_plugin/?page_id=4

请告诉我解决方案

1 个答案:

答案 0 :(得分:3)

我在两个示例中看到的一个区别是,在您的工作示例中,您使用的是newsPerPagenewsTickerInterval整数值。

wp_localize_script将创建字符串值。因此,在custom.js脚本中,尝试在使用它们之前将它们转换为整数。作为测试,试试这个:

jQuery(document).ready(function(){

    newsbox_parameters.newsPerPageInt = parseInt(newsbox_parameters.newsPerPage, 10);
    newsbox_parameters.newsTickerIntervalInt = parseInt(newsbox_parameters.newsTickerInterval, 10);

    jQuery(".news_list").bootstrapNews({
        newsPerPage: newsbox_parameters.newsPerPageInt,
        autoplay: true,
        pauseOnHover: true,
        navigation: false,
        direction: 'down',
        newsTickerInterval: newsbox_parameters.newsTickerIntervalInt,
        onToDo: function () {
            //console.log(this);
        }
    });
});