word_中的get_user_by()未定义

时间:2013-08-01 19:02:46

标签: php wordpress

所以,我正在编写一个插件,用于解析json feed并从feed以编程方式生成页面。我想以编程方式创建一个用户,这将是页面的作者。问题是当我调用username_exists()时,这个函数在内部调用get_user_by(),最终是未定义的。我猜是有一些我需要挂钩的动作或者其他需要先做的事情,但是我很茫然。这是代码,错误apache正在抛弃:

/**
 * A simple class for the cron user, ie the 'author' that will
 * generate pages from the feed
*/
class PP_CronUser {

  private static $cronUserName = 'Cron User';
  private static $cronEmail = 'asdf';
  private static $cronPW = 'asdf';
  private static $ID = null;

  public static function getUserID() {
    if(!is_null(self::$ID)) return self::$ID;
    if(!($id = username_exists(self::$cronUserName))) { //Here's the offending line
    self::$ID = $id;
    return $id;
    }   
    self::$ID = wp_create_user(self::$cronUserName, self::$cronPW, self::$cronEmail); 
    return self::$ID;
  }
}

错误:

  

致命错误:调用未定义的函数get_user_by()   第1198行/home/who_cares/wordpress/wp-includes/user.php

因此定义了username_exists,但这在内部调用了get_user_by,但未定义。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

因此,您只需在插件文件的顶部调用wp-blog-header.php,确保提及正确的路径

require('path/to/wp-blog-header.php');
  

注意此致命错误:调用未定义函数get_user_by()错误   当您调用任何未定义的函数或没有定义时发生   功能

答案 1 :(得分:2)

这意味着当您尝试调用该功能时,尚未加载WordPress核心。

一种解决方案是将其挂接:

add_action('init', function() {
    $user_id = PP_CronUser::getUserID();
});

答案 2 :(得分:0)

我认为我需要勾结某些东西是正确的。我直接从插件调用这个方法。附加到admin_menu挂钩允许加载所有必需的库。