2013-08-01 4 views
0

Итак, я пишу плагин, который анализирует канал json и генерирует страницы программно из фида. Я хочу создать пользователя программно, который будет автором страниц. Проблема в том, что когда я вызываю username_exists(), эта функция внутренне вызывает get_user_by(), которая в конечном счете не определена. Я предполагаю, что есть какое-то действие, которое мне нужно сделать, или какое-то другое событие, которое нужно сделать сначала, но я в недоумении. Вот код, а апач ошибка откинув:get_user_by() undefined in wordpress

/** 
* 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; 
    } 
} 

Ошибка:

Fatal error: Call to undefined function get_user_by() in /home/who_cares/wordpress/wp-includes/user.php on line 1198

Так username_exists определен, но это вызывает get_user_by внутри которых не определен. Есть идеи?

+0

Это не * дубликат *, но проблема такая же, и, вероятно, она решена, [wordpress plugin -> Call to undefined function wp_get_current_user()] (http://stackoverflow.com/q/6127559/1432801) –

ответ

2

Таким образом, вы просто должны вызвать wp-blog-header.php в верхней части файла плагина убедитесь, что вы уже правильный путь

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

Note this Fatal error: Call to undefined function get_user_by() error occurs when you call any undefined function or there is no definition of the function

+0

Каким должен быть правильный путь? –

0

Я был прав, полагая, что я должен был зацепить к чему-то. Я вызывал этот метод непосредственно из плагина. Прикрепление к hook_ adminu позволило загружать все необходимые библиотеки.

+0

Пожалуйста, используйте ссылку для редактирования по вашему вопросу, чтобы добавить дополнительную информацию. Кнопка «Ответ на сообщение» должна использоваться только для полных ответов на вопрос. – Patrick

+0

@Patrick Этот конкретный пост не должен быть отредактирован - это автоответ. –

+0

Наиболее правильным действием является, вероятно, '' init'', см. [Ответ] (http://stackoverflow.com/a/6127607/1432801) –