Как получить адрес электронной почты автора по ID?

Вопрос или проблема

Я хочу создать 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 'Пользователь не найден.';
    }
}
?>

Что делает этот код?

  1. Проверка метода запроса: Мы сначала проверяем, был ли отправлен POST-запрос и действительно ли поле ID пользователя не пустое.

  2. Фильтрация данных: intval() используется для фильтрации ID пользователя, что предотвращает возможные уязвимости.

  3. Получение данных пользователя: Функция get_userdata($user_id) извлекает объект пользователя, связанный с данным ID.

  4. Проверка существования пользователя: Если пользователь найден, его адрес электронной почты берется из свойства user_email объекта пользователя, и используется функция esc_html() для безопасного вывода информации, чтобы избежать XSS-атак.

  5. Вывод результатов: Если пользователь с указанным ID не найден, выводится соответствующее сообщение.

Дальнейшие улучшения

  • Безопасность: Рассмотрите использование механизма проверки_nonce в WordPress для дополнительного уровня защиты формы.
  • Стиль: Для лучшего отображения результатов вы можете добавить CSS.
  • Уведомления: Можно добавить возможность отправки уведомления по электронной почте при запросе, если требуется.

Заключение

Теперь у вас есть полностью функциональный пример, который позволяет отображать адрес электронной почты пользователя по его ID в WordPress. Убедитесь, что вы помещаете этот код в безопасное и правильно настроенное место в вашей теме, чтобы избежать проблем с производительностью или безопасностью.

Оцените материал
Добавить комментарий

Капча загружается...