我正在使用Wordpress插件为我的网站创建用户,我需要检查用户是否登录,然后在jquery函数中执行某些操作。该插件声明他们为这些事情设置了公共功能。我不确定我是否已正确设置,无论用户是登录还是退出,它都会“登出”。公共函数在我的主题的functions.php文件中,并且是:
function loggedin() {
$FEUP = new FEUP_User;
if ($FEUP->Is_Logged_In()) {
echo "loggedin";
} else {
echo "loggedout";
}
}
我的jquery函数是:
var user = "<?php loggedin(); ?>";
if(user == "loggedin") {
console.log("user is logged in");
}else {
console.log("user is logged out");
}
答案 0 :(得分:1)
您可以考虑使用wp_localize_script()来确保在jQuery代码可以看到的情况下输出您的javascript变量。
这是一个例子。这将是你的jQuery文件入队的php插件代码:
wp_enqueue_script('my-script-handle', plugins_url( '/whatever_location/myscript.js', __FILE__), array('jquery'));
然后,您可以使用wp_localize_script()
函数从php添加javascript变量,该函数会将您的变量输出到脚本可以使用的脚本标记内:
wp_localize_script('my-script-handle','my_plugin_vars', array('logged_status' => 'some_value'));
总之它看起来像这样:
PHP:
$FEUP = new FEUP_User;
$logged_status = $FEUP->Is_Logged_In() ? 'loggedin' : 'notloggedin';
wp_enqueue_script('my-script-handle', plugins_url( '/whatever_location/myscript.js', __FILE__), array('jquery'));
wp_localize_script('my-script-handle','my_plugin_vars', array('logged_status' => $logged_status));
JS:
if(my_plugin_vars.logged_status == 'loggedin') {
console.log("user is logged in");
} else {
console.log("user is logged out");
}
答案 1 :(得分:0)
如果要生成PHP脚本中的所有代码,即变量赋值和实际的javascript代码,这应该可以。
<?php
function loggedin() {
$FEUP = new FEUP_User;
if ($FEUP->Is_Logged_In()) {
return 'true';
} else {
return 'false';
}
}
echo '<script type="text/javascript">';
echo 'var user = <?php echo loggedin(); ?>;';
echo 'if(user) {
console.log("user is logged in");
}else {
console.log("user is logged out");
}';
echo '</script>';
?>
或者如果你的javascript是单独保存的,那么你需要做的就是输出设置变量的javascript
<?php
function loggedin() {
$FEUP = new FEUP_User;
if ($FEUP->Is_Logged_In()) {
return 'true';
} else {
return 'false';
}
}
echo '<script type="text/javascript">';
echo 'var user = <?php echo loggedin(); ?>;';
echo '</script>';
但是,测试此变量的javascript必须在javascript的变量赋值部分执行并将该变量加载到Global命名空间之后才能运行。
从您的代码示例中,很难确切地看出哪些可能性投注符合您的实际情况。