2

因此,我正在编写一个插件来解析 json 提要并从提要中以编程方式生成页面。我想以编程方式创建一个将成为页面作者的用户。问题是当我在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;
  }
}

错误:

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

所以username_exists是定义的,但是这在内部调用get_user_by是没有定义的。有任何想法吗?

4

3 回答 3

4

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

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

请注意此致命错误:调用未定义函数或没有函数定义时发生调用未定义函数 get_user_by() 错误

于 2013-08-01T20:00:02.983 回答
4

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

一种解决方案是挂钩它:

add_action('init', function() {
    $user_id = PP_CronUser::getUserID();
});
于 2018-11-26T09:55:09.803 回答
0

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

于 2013-08-01T20:57:31.500 回答