首先,我对php很新,所以请耐心等待。我有一个来自wordpress模板的javascript(.js)文件,它从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);
});
答案 0 :(得分:2)
你总是可以让JS运行Ajax调用来获取数据。或者,您可以将变量声明移动到包含JS的PHP / HTML文件中,然后添加
<script type='text/javascript'>
var googledockey="<?echo $gdkey;?>"
</script>
答案 1 :(得分:1)
<强> 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;
就是这样。我认为这可以解决您的问题,这也是正确的方法。
答案 2 :(得分:0)
通常不会为PHP解析JS文件。最简单(尽管不是最漂亮)的方法可能是:
1)回显页面模板本身中隐藏的DOM元素中的值,然后使用JS获取该元素并设置变量(因此,将值放在页面上的隐藏元素内,或作为属性或然后,使用JS获取该值并将其分配给您的变量。
2)与上面类似,只需将变量声明放在内联脚本(<script>code</script>
)中,因为它将被解析为PHP - 请参阅Seriyia的回答。
3)使用简单的AJAX调用,这些调用对于jQuery来说非常简单,并且允许您将数据从JS传递到PHP函数(如functions.php
之类的其他地方,然后再传递给JS。如果您不熟悉AJAX,这可能比它的价值更麻烦。
答案 3 :(得分:-1)
这很简单 您目前正在使用此代码段
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);
});