Вопрос или проблема
Я хочу создать HTML-форму, в которой будет поле для ввода идентификатора пользователя. Затем я хочу передать это значение в PHP-код, чтобы отобразить адрес электронной почты, связанный с этим идентификатором пользователя. Однако я новичок в WP и не знаю, как это правильно сделать.
Я создал новый PHP-файл в корневой папке моего каталога WP и вставил в него этот код, но это не сработало.
<?php
$field = 53;
$value = 53;
function get_user_by( $field, $value ) {
$userdata = WP_User::get_data_by( $field, $value );
if ( ! $userdata ) {
return false;
}
$user = new WP_User;
$user->init( $userdata );
var_dump($user);
}
?>
Я также искал в интернете, но не смог найти ничего подобного? Может, кто-то проведет меня через это?
Используйте get_userdata()
, чтобы получить объект пользователя, а адрес электронной почты будет свойством email
:
$userdata = get_userdata( $user_id );
if ( ! $userdata ) {
return false;
}
echo $userdata->email;
Ответ или решение
Чтобы извлечь адрес электронной почты автора по его ID в WordPress, вам нужно создать HTML-форму, которая будет отправлять ID пользователя на обработку через PHP. При этом желательно придерживаться стандартам безопасности, используя проверки и фильтрацию данных.
Шаг 1: Создание HTML-формы
Первым делом создайте HTML-форму для ввода ID пользователя. Вы можете добавить эту форму в файл шаблона вашей темы или в отдельный файл.
<form action="" method="post">
<label for="user_id">Введите ID пользователя:</label>
<input type="number" id="user_id" name="user_id" required>
<input type="submit" value="Получить Email">
</form>
Шаг 2: Обработка данных с помощью PHP
Затем вам нужно обработать данные, введенные в форму. Поместите следующую часть кода в тот же файл, что и ваш HTML-код:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST['user_id'])) {
// Получаем ID пользователя и фильтруем его
$user_id = intval($_POST['user_id']);
// Получаем объект пользователя по ID
$userdata = get_userdata($user_id);
// Проверяем, существует ли пользователь
if ($userdata) {
// Выводим адрес электронной почты пользователя
echo 'Адрес электронной почты: ' . esc_html($userdata->user_email);
} else {
echo 'Пользователь не найден.';
}
}
?>
Что делает этот код?
-
Проверка метода запроса: Мы сначала проверяем, был ли отправлен POST-запрос и действительно ли поле ID пользователя не пустое.
-
Фильтрация данных:
intval()
используется для фильтрации ID пользователя, что предотвращает возможные уязвимости. -
Получение данных пользователя: Функция
get_userdata($user_id)
извлекает объект пользователя, связанный с данным ID. -
Проверка существования пользователя: Если пользователь найден, его адрес электронной почты берется из свойства
user_email
объекта пользователя, и используется функцияesc_html()
для безопасного вывода информации, чтобы избежать XSS-атак. -
Вывод результатов: Если пользователь с указанным ID не найден, выводится соответствующее сообщение.
Дальнейшие улучшения
- Безопасность: Рассмотрите использование механизма проверки_nonce в WordPress для дополнительного уровня защиты формы.
- Стиль: Для лучшего отображения результатов вы можете добавить CSS.
- Уведомления: Можно добавить возможность отправки уведомления по электронной почте при запросе, если требуется.
Заключение
Теперь у вас есть полностью функциональный пример, который позволяет отображать адрес электронной почты пользователя по его ID в WordPress. Убедитесь, что вы помещаете этот код в безопасное и правильно настроенное место в вашей теме, чтобы избежать проблем с производительностью или безопасностью.