将变量从 WordPress PHP 传递到 JavaScript
Posted
技术标签:
【中文标题】将变量从 WordPress PHP 传递到 JavaScript【英文标题】:Passing Variable from WordPress PHP to JavaScript 【发布时间】:2018-01-29 17:24:19 【问题描述】:我正在使用两个 WordPress 插件 - 用于插入 php 代码的片段和用于插入 javascript 的脚本 n 样式。
我的目标是获取登录用户的电子邮件地址并预填充表单。
Snippets 中的 PHP 代码是:
<?php
function get_user()
$current_user = wp_get_current_user();
$user_email = $current_user->user_email;
add_action( 'init', 'get_user', 10 );
?>
Scripts n Styles 中的代码是:
<script type="text/javascript">
window.onload = function ()
var useremail = "<?php echo json_encode($user_email); ?>";
document.getElementsByName("ElementName")[0].value = useremail;
</script>
但我没有获取 user@domain.com,而是将引用的文本插入到表单中:
<?php echo json_encode($user_email); ?>
知道什么地方出了问题或者有更好的方法来达到同样的结果吗?
【问题讨论】:
脚本和样式中的代码是用php渲染的还是只是一个javascript文件? JavaScript 嵌入到 head 元素中 它应该像预期的那样工作,请参阅3v4l.org/ffDZf JS嵌入到头部,但不会解析JavaScript中的php代码。 Scripts n Styles 不会在 JavaScript 字符串上运行 PHP,只是按原样打印出来。 【参考方案1】:WordPress 有一个有用的功能来本地化要从 PHP 传递以在 JavaScript 中使用的脚本。这可以通过在将脚本加入队列之前使用wp_localize_script()
函数来完成。
这是一个来自 WordPress Codex 的使用示例。 https://codex.wordpress.org/Function_Reference/wp_localize_script
注册和入队脚本:
// Register the script
wp_register_script( 'some_handle', 'path/to/myscript.js' );
// Localize the script with new data
$translation_array = array(
'some_string' => __( 'Some string to translate', 'plugin-domain' ),
'a_value' => '10'
);
wp_localize_script( 'some_handle', 'object_name', $translation_array );
// Enqueued script with localized data.
wp_enqueue_script( 'some_handle' );
在 JavaScript 中使用该数据:
// alerts 'Some string to translate'
alert( object_name.some_string);
这里有一篇关于它如何工作的好文章:http://www.webtipblog.com/localize-scripts-in-wordpress-to-use-php-variables-in-javascript/
【讨论】:
以上是关于将变量从 WordPress PHP 传递到 JavaScript的主要内容,如果未能解决你的问题,请参考以下文章
将变量从 PHP 传递到 javascript 并传递到 html 表单
将 $_GET 变量从 Wordpress 页面传递到外部 iFrame