Wordpress get_user_meta 显示错误值

Wordpress get_user_meta showing wrong value

您好,感谢您花时间尝试帮助我。我对 PHP 一点经验都没有。我正在尝试为我的 wordpress 网站做一些自定义片段。我已经做了一些,但由于某种原因,这个不起作用。我在我的网站上使用 Formidable Forms 来注册用户,在注册时创建了一个名为“信息”的自定义元字段,该值设置为“否”。只有当用户在我的客户信息表单中创建条目时,该字段才会更改。然后元值更改为“是”。此代码段是强制他们在登录时填写信息表单并将他们定向到该页面,但出于某种原因,我从用户元数据中获得的值为“否”。这是错误的。有任何想法吗?我使用的代码:

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' );

好吧,我认为您的 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 语句不正确。

您的代码不正确。 比较两个值的操作在 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());
    }
}

有关详细信息,请参阅此link

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