【问题标题】:Wordpress: Fatal error: Call to undefined function is_user_logged_in()Wordpress:致命错误:调用未定义函数 is_user_logged_in()
【发布时间】:2015-08-03 16:46:28
【问题描述】:

我在 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 之外运行,这就是它找不到该功能的原因。

【问题讨论】:

  • 互联网是对的,你在wordpress之外运行,这就是它找不到功能的原因。
  • 你把代码放在哪里了?
  • @Samir in ../wp-includes/custom-scripts 我通过 php 插件将其加载到 wordpress 中。所有这些都可以正常工作,但不是这个。

标签: php wordpress


【解决方案1】:

也许您运行代码过早,如下所述: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');

【讨论】:

  • 所以要清楚,我必须将该代码放在 function.php 中,就这样吗?看起来很容易成为真的XD
  • functions.php,是的。它应该调用“init”,这意味着该函数应该可用。在您似乎试图在设置之前调用该函数。
  • 当我尝试加载网站的任何内容时出现此错误:致命错误:在第 4871 行的 C:**\wp-includes\functions.php 中调用未定义函数 add_action()
  • 好吧,对不起,我以为你在这方面有点经验。那么您是在尝试构建插件或主题或其他东西吗?如果是这样,您的插件/主题应该有它自己的文件夹,并且该文件夹内应该是一个 functions.php 文件,这是您可以编辑的插件/主题个人 functions.php 文件。您不想更改 wp-includes 中的任何内容。
  • 我不是在尝试制作插件或主题(而且我确实没有'那个'的经验)。我正在尝试通过 wordpress 页面上的 wordpress php 插件加载 php 脚本。我加载的所有其他脚本都可以正常工作,但这个不能。
【解决方案2】:

我有我的答案。

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

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

这样就成功了。

【讨论】:

    【解决方案3】:
    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;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2014-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      • 2010-11-03
      • 1970-01-01
      • 2019-05-15
      相关资源
      最近更新 更多