Получение данных текущего пользователя на внешней PHP странице
У меня есть PHP страница на том же уровне, что и шаблон/тема в WordPress. Мне нужно получить данные текущего авторизованного пользователя на этой странице.
Я пробовал этот код:
require_once( $_SERVER['DOCUMENT_ROOT'] . '/wp-load.php' );
global $current_user;
$current_user = wp_get_current_user();
var_dump( $current_user );
Но он ничего не возвращает. 0
в поле user_id
и пустые значения в остальных полях. Я что-то упускаю?
ОБНОВЛЕНИЕ:
Результат выполнения var_dump
:
object Object]1object(WP_User)#79 (10) {
["data"] => NULL
["ID"] => int(0)
["id"] => int(0)
["caps"] => array(0) {}
["cap_key"] => NULL
["roles"] => array(0) {}
["allcaps"] => array(0) {}
["first_name"] => string(0) ""
["last_name"] => string(0) ""
["filter"] => NULL
}

Вы можете...
Подключить файл в том месте, где хотите отобразить сообщение 'Привет, имя пользователя':
<?php include(TEMPLATEPATH .'/check-user-hello.php'); ?>
.
Затем в файле "check-user-hello.php"
Нужно разместить этот код:
<?php
if ( is_user_logged_in() ) {
global $current_user;
get_currentuserinfo();
echo 'Привет ' . $current_user->display_name;
} else {
echo '<a href="'. get_bloginfo('url') .'/wp-admin" class="loginlinktop">Войти</a>';
}
?>
.
Надеюсь, это поможет :)
Чтобы узнать больше по этой теме:
.
Исправление 3
Насколько мне известно, вам нужно подключить wp-blog-header.php, чтобы использовать функции WordPress вне цикла... так что попробуйте так:
<?php
require('../../../wp-blog-header.php');
if ( is_user_logged_in() ) {
global $current_user;
get_currentuserinfo();
echo 'Привет ' . $current_user->display_name;
} else {
echo '<a href="'. get_bloginfo('url') .'/wp-admin" class="loginlinktop">Войти</a>';
}
?>
.
Обратите внимание:
Путь к "wp-blog-header.php" в этом коде предполагает, что ваш файл находится в директории шаблона. Если это не так, вам следует изменить путь в require, чтобы файл загружался корректно.

ОК, наверное, чего-то не хватает? Я получаю эту ошибку: <b>Фатальная ошибка</b>: Вызов undefined функции is_user_logged_in() в <b>/home/mydomain/public_html/wp-content/themes/mytheme/uploadify.php</b> на строке <b>25</b><br />

что это за страница uploadify.php? это шаблон страницы? можешь вставить её код в pastebin и дать здесь ссылку?

<?php
//$targetFolder = '/uploads/'; // Относительно корня if (!empty($_FILES)) { $tempFile = $_FILES['Filedata']['tmp_name']; $targetPath = $_SERVER['DOCUMENT_ROOT'] . $targetFolder; ////$targetFile = rtrim($targetPath,'/') . $_FILES['Filedata']['name']; $targetFile = $targetPath . $_FILES['Filedata']['name'];
$fileTypes = array('jpg','jpeg','gif','png'); // Расширения файлов $fileParts = pathinfo($_FILES['Filedata']['name']);
if (in_array($fileParts['extension'],$fileTypes)) { move_uploaded_file($tempFile,$targetFile); echo '1'; } else { echo 'Недопустимый тип файла.'; } } ?>

Это не шаблон WordPress. Это отдельная PHP-страница. Мне просто нужно узнать текущее имя пользователя в WordPress, чтобы я мог добавить его в конец пути $targetFolder.

Я думаю, что wp-load.php
достаточно, не нужно подключать header, я так считаю, так как он включает template-loader.php
тоже.

Привет, запоздалым искателям (как я). Так как я долго бился над этой проблемой, а решения, предлагающие загрузить wp-load.php или wp-blog-header.php, которые, возможно, работали раньше, не работают в более поздних версиях, решение заключается в загрузке wp-load.php И последующем вызове функции wp_head(). Итак, без лишних слов,
require('../../../../../wp-load.php'); //Очевидно, мой собственный грубый вариант пути к файлу wp-load.php.
wp_head();
$user = get_user_by('ID',57); //Получает объект пользователя по ID. Измените '57' на действительный ID в вашей установке.
echo "<pre>";
print_r($user);
echo "</pre>";
...и дело в шляпе.
Вывод:
WP_User Object
(
[data] => stdClass Object
(
[ID] => 57
[user_login] => unclebob
[user_pass] => $P$BkVVl8RhOc/niffq1QaNyaMeNwvpoO0
[user_nicename] => unclebob
[user_email] => uncle.bob@unclebob.online
[user_url] =>
[user_registered] => 2019-11-29 08:38:45
[user_activation_key] => 1575016726:$P$BE/a1mnbiD4unzrYG5O0L1T1pJZ5GG.
[user_status] => 0
[display_name] => Uncle Bob, PhD
)
[ID] => 57
[caps] => Array
(
[admin] => 1
)
[cap_key] => wp_capabilities
[roles] => Array
(
[0] => admin
)
[allcaps] => Array
(
[0] => read
[admin] => 1
)
[filter] =>
[site_id:WP_User:private] => 1
)
