Wordpress get_user_meta 显示错误值

问题描述 投票:0回答:2

我正在尝试为我的 WordPress 网站制作一些自定义片段。我已经做了一些,但由于某种原因,这个不起作用。我在网站上使用 Formidable Forms 来注册用户,注册时会创建一个名为“info”的自定义元字段,并将值设置为“no”。仅当用户在我的客户信息表单中创建条目时,此字段才会更改。然后元值更改为“yes”。

此代码片段是强制他们在登录时填写信息表单并将其引导至该页面,但由于某种原因,我从用户元获得的值是“否”。这是错误的。有任何想法吗?我正在使用的代码:

function my_logged_in_redirect() {
    $userid = get_current_user_id();
    $info = get_user_meta($userid, 'info', true);
    $loggedin = is_user_logged_in();
    if (is_page(1795)){
        if ($loggedin == true && $info = 'no'){
            wp_redirect(home_url('/dashboard/account-information'));
        }
        else if ($loggedin == true && $info = 'yes'){
            wp_redirect(home_url('/dashboard'));
        }
        else if ($loggedin == false){
            wp_redirect(home_url());
        }
    }
}
add_action( 'template_redirect', 'my_logged_in_redirect' );
php wordpress formidable
2个回答
0
投票

我认为你的 if 语句可能是错误的。

if ($loggedin == true && $info = 'no'){

应改为

 if ($loggedin == true && $info == 'no'){

还有这个

else if ($loggedin == true && $info = 'yes'){

到此

else if ($loggedin == true && $info == 'yes'){

除了这些点之外,你的代码看起来并没有错^。看起来

$info
可能具有正确的值,但只是 if 语句不正确。


0
投票

您的代码不正确。 比较两个值的操作在php中通过

==
===
完成。

  • 仅等于值(==)
  • 等量和数据类型(===)
  • 运算符(=)用于设置值

此代码正确:

if (is_page(1795)) {
    if ($loggedin == true && $info == 'no') {
        wp_redirect(home_url('/dashboard/account-information'));
    } else if ($loggedin == true && $info == 'yes') {
        wp_redirect(home_url('/dashboard'));
    } else if ($loggedin == false) {
        wp_redirect(home_url());
    }
}

欲了解更多信息,请参阅此链接

https://www.w3schools.com/php/php_operators.asp

© www.soinside.com 2019 - 2024. All rights reserved.