繁体   English   中英

Wordpress:致命错误:调用未定义函数is_user_logged_in()

[英]Wordpress: Fatal error: Call to undefined function is_user_logged_in()

我在wordpress页面加载一个PHP脚本,但是当脚本运行时,我得到了这个:

Fatal error: Call to undefined function is_user_logged_in()

它尝试运行的代码:

<?php
if ( is_user_logged_in() == true ) {
  /* Some code */
} else {
 /* Some other code */
}
?>

我试着寻找答案但我找不到合适的解决方案。
从我在互联网上找到的,我的脚本在wordpress之外运行,这就是为什么它找不到该功能。

也许您过早地运行代码如下所述: https//wordpress.org/support/topic/fatal-error-call-to-undefined-function-is_user_logged_in

问题是is_user_logged_in是一个可插入的函数,因此在调用此插件逻辑后加载。 解决方案是确保您不要过早地调用它。

他的解决方案是将代码包装在另一个在init上调用的函数中,并且可以放在functions.php文件中:

function your_login_function()
{
    if ( is_user_logged_in() == true ) {
       /* Some code */
    } else {
        /* Some other code */
    }
}
add_action('init', 'your_login_function');
require_once( wp_normalize_path(ABSPATH).'wp-load.php');

class Your_Plugin_Class {
    private  $is_user_logged_in;

    add_action('init', function(){
        $this-> is_user_logged_in = is_user_logged_in();
        echo 'is_user_logged_in'.$this->is_user_logged_in;
    });

    add_filter('woocommerce_billing_fields-2',array( $this, 'add_billing_field' ));

   }

    public function add_billing_field( $fields = array() ) {
        if ( $this->is_user_logged_in  ){
            echo 'add_billing_field'.$this->is_user_logged_in;
            return $fields;
        }else{
            echo 'add_billing_field'.$this->is_user_logged_in;
        }
    }
}

我有我的答案。

我需要将这行代码添加到我的php脚本中:

require_once("path/to/wordpress/wp-load.php");

这就是诀窍。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM