首先,我是php的新手,所以请原谅我。我有一个javascript (.js)文件从一个wordpress模板,从var googledockey
读取密钥。为了改变它,我必须手动打开.js文件并改变该变量。我想做的是让.js文件从保存在我制作的页面上的地方抓取密钥。下面是管理页面的代码,它有一个文本框供我输入一个键。
<?php
if($_POST['gdocs2wp_hidden'] == 'Y') {
//Form data sent
$gdkey = $_POST['gdocs2wp_gdkey'];
update_option('gdocs2wp_gdkey', $gdkey);
?>
<div class="updated"><p><strong><?php _e('Options saved.' ); ?></strong></p></div>
<?php
} else {
//Normal page display
$gdkey = get_option('gdocs2wp_gdkey');
}
?>
键保存,每当我打开页面时,键显示,所以我知道这一半是工作的。这就是我被难住的地方。在我的.js文件中,它位于管理页面的子目录中,var googledockey
是我必须手动保存每次工作的密钥的地方。我试过<?php echo $gdkey; ?>
和get_option('gdocs2wp_gdkey');
试图得到钥匙,但我没有任何运气。php可以在。js文件中工作吗?有人有什么真知灼见能帮我吗?由于
var jqueryNoConflict = jQuery;
//var googledockey = <?php echo $gdkey; ?>
var googledockey = "INSERTmyKEYhere";
// begin main function
jqueryNoConflict(document).ready(function(){
initializeTabletopObject(googledockey);
});
您总是可以让JS运行Ajax调用来获取数据。或者,您可以将变量声明移动到包含JS的PHP/HTML文件中,然后添加
<script type='text/javascript'>
var googledockey="<?echo $gdkey;?>"
</script>
1。注册你的脚本
创建一个JavaScript文件,放在你的主题文件夹中,并注册到WordPress。
wp_register_script(
'google-docs',
get_bloginfo('template_directory') . '/scripts/google-docs.js'
);
文档:http://codex.wordpress.org/Function_Reference/wp_register_script
2。
当模板中需要脚本时,您可以将文件加入队列。
wp_enqueue_script(
'google-docs'
);
文档:http://codex.wordpress.org/Function_Reference/wp_enqueue_script
3。本地化脚本
这允许你在JavaScript中使用PHP变量。
wp_localize_script(
'google-docs',
'google_docs_vars',
array(
'key' => $google_doc_key
)
);
文档:http://codex.wordpress.org/Function_Reference/wp_localize_script
4。在脚本中使用变量
现在您可以访问脚本中的变量了。
var google_docs_key = google_docs_vars.key;
就是这样。我认为这将解决你的问题,也是正确的方法。
JS文件一般不会被PHP解析。最简单的(虽然不是最漂亮的)方法可能是:
1)在页面模板中返回隐藏的DOM元素中的值,然后使用JS获取该元素并设置变量(因此,将值放在页面上的隐藏元素中,或者作为属性或其他东西,然后使用JS获取该值并将其分配给变量)。
2)与上面类似,只需将变量声明放在内联脚本(<script>code</script>
)中,因为它将被PHP解析-参见Seriyia的答案。
3)使用简单的AJAX调用,这真的很容易与jQuery,让你从JS传递数据到PHP函数在其他地方,如functions.php
,然后返回到JS。如果您不熟悉AJAX,那么这可能会带来更多的麻烦。
这很简单您最近使用了此代码片段
var jqueryNoConflict = jQuery;
//var googledockey = <?php echo $gdkey; ?>
var googledockey = "INSERTmyKEYhere";
// begin main function
jqueryNoConflict(document).ready(function(){
initializeTabletopObject(googledockey);
});
您需要将其替换为以下代码
var jqueryNoConflict = jQuery;
var googledockey = "<?php echo $gdkey; ?>"
var googledockey = "INSERTmyKEYhere";
// begin main function
jqueryNoConflict(document).ready(function(){
initializeTabletopObject(googledockey);
});