Текущий результат - «PHP Fatal error: вызов неопределенной функции wp_get_current_user ()», которая имеет смысл, но не помогает.
Мне нужно использовать $ current_user.
Вот код, который я сейчас использую:
$wp->init();
do_action( 'init' ); // Check site status
$file='http://xxxxxxxx.com/wp-admin/wp_includes/pluggable.php';
if ( is_multisite() ) {
if ( true !== ( $file = ms_site_check() ) ) {
require( $file );
die();
}
unset($file);
}
// Get the current user's info
$current_user = wp_get_current_user();
if ( !($current_user instanceof WP_User) )
return;
echo $current_user->user_login;
function paf_uname(){
return $current_user->user_login;
}
$wp->init(); do_action( 'init' ); // Check site status $file='http://taddy.co.uk/wp-admin/wp_includes/pluggable.php'; if ( is_multisite() ) { if ( true !== ( $file = ms_site_check() ) ) { require( $file ); die(); } unset($file); } // Get the current user's info $current_user = wp_get_current_user(); if ( !($current_user instanceof WP_User) ) return; echo $current_user->user_login; function paf_uname(){ return $current_user->user_login; }
Ответы:
Чтобы добавить к ответу @ EAMann, вам нужно заключить
wp_get_current_user()
вызов (или любой вызов, который пытается получить доступ к функции, определенной внутриpluggable.php
) в'plugins_loaded'
действие.Итак, если вы помещаете это в свой
functions.php
файл, сделайте это так:Обратите внимание, что нам не интересно, что возвращает эта функция . Мы заинтересованы в том, когда эта функция исполняет , а именно, после
pluggable.php
того, как файл загружен и определили своюwp_get_current_user()
функцию.Так что не ожидайте ничего сделать с возвращаемым значением для этой функции. Вместо этого рассмотрите эту функцию как отправную точку для всего, что вы хотите сделать, когда получите информацию о текущем пользователе.
Делать это в плагине
Для полноты, вот как вы можете получить доступ к аналогичной подключаемой функции из контекста вашего собственного плагина:
(поместите это в файл .php внутри вашей
plugins
папки)Я успешно использовал эту технику для очень простого плагина типа «Скоро», который перенаправляет пользователя на определенную страницу, если он не вошел в систему с помощью
wp_safe_redirect()
.источник
plugins_loaded
действие для запуска,wp_safe_redirect()
если страница администратора плагина выводит HTML до того, как уheader('Location: …')
него появится шанс запустить? У меня возникла проблема, когда страница, определенная с использованиемadd_menu_page(…)
вывода заголовка WP (и содержимого и нижнего колонтитула), когда плагин загружается задолго доplugins_loaded
запуска. Я хотел бы иметь доступ к функциям внутриpluggable.php
(для доступа к данным пользователя и перенаправления), но это кажется невозможным. Вы использовалиadd_menu_page
сplugins_loaded
?plugins are included
pluggable.php is included
'plugins_loaded' is triggered
'load-{page_hook}' is triggered
'page_hook' is triggered
Проблема в том, что вы пытаетесь загрузить код напрямую, а не с помощью ловушки WordPress. WordPress загружает кучу кода в определенном порядке (вы можете увидеть список действий, выполняемых по типичному запросу в Кодексе ).
Пытаясь запустить ваш код напрямую, вы выполняете непосредственно перед
pluggable.php
загрузкой. И вы не должны пытаться использоватьinclude()
этот файл напрямую. Пусть WordPress сделает это за вас.Вместо этого определите функцию, которая получает информацию о пользователе:
Затем вы можете использовать эту функцию в любом месте вашей темы без проблем. Например:
Если вам нужно использовать
$current_user
другой код, убедитесь, что вы запускаете этот код с действием WordPress ... не вызывайте его напрямую, иначе он будет выполнен до того, как функция станет доступна.источник
Похоже, вы загружаете свой код до того, как станут доступны определенные функции. Ты пробовал:
источник
Просто добавьте эту функцию в ваш плагин .php файл
Затем позвоните туда, куда хотите получить статус входа пользователя. Например:
источник