获取在jquery中使用的php函数信息

时间:2017-04-18 15:15:05

标签: php jquery wordpress

我正在使用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");
}

这是插件制作者的截图,介绍如何实现公共功能以查看用户是否已登录:enter image description here

2 个答案:

答案 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命名空间之后才能运行。

从您的代码示例中,很难确切地看出哪些可能性投注符合您的实际情况。