将数据从wp选项提取到js文件或php文件的最佳方法

时间:2013-07-10 作者:David Garcia

我正在创建我的第一个插件,因为我不是一个程序员,我一直在遵循教程和阅读法典等。

我的插件包括在满足某些条件时向用户显示通知,我在jQuery中编写了它,并将其放置在js文件中,该文件由插件与样式一起排队。

我遵循了一个教程,该教程简单地广告了一个设置页面和一个带有简单文本框的表单,以将数据保存在wp选项表中,我进行了测试,结果成功地存储了数据。

现在,我如何将数据从wp选项传输到js文件,即显示通知的行;

jQuery(\'.notice_container\').wrap(<\'div id="custom_notice"><span>Hello World....</span></div>\')
感谢您抽出时间。

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

假设您没有使用AJAX进行表单提交,那么可以使用wp_localize_script(). 以下是一个简化版本:

在插件文件中:

function wpse105919_add_scripts(){
  wp_enqueue_script( \'myjs\', plugins_url( \'/myjs.js\', __FILE__ ) );
  wp_localize_script( \'myjs\', \'jsLocalizedObject\', \'hello world\');
}
add_action(\'wp_enqueue_scripts\', \'wpse105919_add_scripts\');
目录myjs.js 文件:

alert( jsLocalizedObject );
wp_localize_script() 将添加一个名为jsLocalizedObject 到您文档的<head>. 如果查看页面的源代码,您将看到如下内容:

<script type=\'text/javascript\'>
/* <![CDATA[ */
var jsLocalizedObject = "hello world";
/* ]]> */
</script>
从您的wp_options 表,您可以使用get_option() 然后传递结果,而不是hello worldwp_localize_script 作用

您的代码如下所示:

function wpse105919_add_scripts(){
  wp_enqueue_script( \'myjs\', plugins_url( \'/myjs.js\', __FILE__ ) );
  $myoption = get_option(\'option_name\', \'default_value\');
  wp_localize_script( \'myjs\', \'jsLocalizedObject\', $myoption);
}
add_action(\'wp_enqueue_scripts\', \'wpse105919_add_scripts\');
以及您的jQuery部分:

jQuery(\'.notice_container\').wrap(<\'div id="custom_notice"><span>\' + jsLocalizedObject + \'</span></div>\')
请注意,您应该使用admin_enqueue_script 相反,如果您的JS应该加载到仪表板中。

结束

相关推荐

如何禁用我的主机强制执行的插件(在u-plugins中)?

我的主机制作了两个必需的插件,它们会在mu plugins文件夹下自动更新。有没有一种方法可以通过一些技巧来禁用它们,例如在我的本地插件文件夹下使用一个同名的插件文件夹,或者复制一些函数并使其为空?