Получение email текущего пользователя в виде строкового значения

22 мая 2015 г., 23:22:57
Просмотры: 30.2K
Голосов: 3
if(strpos($query, '%get_email%') !== false){
        $query = str_replace('%get_email%',  get_the_author_meta( 'user_email' ), $query);
    }

Я пытаюсь сделать MySQL запрос, и в плагине я пытаюсь добавить шорткод %get_email%, но он не возвращает никакой email в фактическом запросе.

Например: select * from tablename where email='%get_email%';

Есть идеи, как это сделать?

Вот что работает для ID -

    if(strpos($query, '%CURRENT_USER_ID%') !== false){
        $query = str_replace('%CURRENT_USER_ID%', get_current_user_id(), $query);
    }
1
Комментарии

Что такое $query? В каком контексте? Я не уверен, что именно вы делаете.

s_ha_dum s_ha_dum
23 мая 2015 г. 00:52:52
Все ответы на вопрос 4
2

Я поступлю следующим образом:

global $current_user;
get_currentuserinfo();

$email = (string) $current_user->user_email;
var_dump($email);

Вы просто получили email из массива current_user и привели его к строковому типу :) вот и всё

23 мая 2015 г. 12:01:15
Комментарии

Вам следует использовать wp_get_current_user, а не глобальную переменную $current_user.

amiad amiad
14 нояб. 2021 г. 12:47:50

Если пользователь находится в процессе смены email-адреса, но его новый email-адрес еще не подтвержден, будет возвращен старый или новый email-адрес?

Flimm Flimm
21 нояб. 2022 г. 10:54:35
3

Скачайте/установите плагин WordPress PHPCode Snippets, затем создайте шорткод с таким содержимым (точно как показано ниже):

<?php
// Получаем текущего пользователя
$current_user = wp_get_current_user();
// Выводим email пользователя
echo $current_user->user_email;
23 июл. 2021 г. 13:22:18
Комментарии

Но это не контролирует, где именно на странице выполняется код, верно? Вероятно, стоит сделать что-то лучше, чем просто echo, например, определить шорткод, как это делают в некоторых других ответах.

Rup Rup
23 июл. 2021 г. 15:33:26

Я не понимаю, зачем вы пытаетесь усложнять довольно простую ситуацию.

Yusuf Odukoya Yusuf Odukoya
23 июл. 2021 г. 22:03:51

Никогда не используйте echo или print в шорткоде. Это приведёт к немедленному выводу, а не к отображению в месте использования шорткода.

fuxia fuxia
31 июл. 2021 г. 13:08:01
0

Если вам нужно просто "Получить email текущего пользователя в виде строки", вы можете сделать это с помощью следующей функции:

// Добавьте эту функцию в ваш файл functions.php или в плагин
function mm_get_current_user_email(){
    global $current_user;
    get_currentuserinfo();

    $email = $current_user->user_email; 

    return $email;  
} 
add_shortcode( 'get_email', 'mm_get_current_user_email');

Теперь вы можете получить email текущего пользователя в виде строки в любом месте, просто используя [get_email] или <?php echo do_shortcode( '[get_email]' ); ?>

Для получения дополнительной информации о get_currentuserinfo() посетите WordPress Codex.

23 мая 2015 г. 09:27:55
1

Ответ в милях приемлем, но нет необходимости вызывать дополнительную функцию. Можно просто использовать так:

global $current_user;

$email = $current_user->user_email;
12 окт. 2021 г. 08:18:08
Комментарии

многое изменилось с 2015 года :) LoL

` // Получаем информацию о текущем пользователе $current_user = wp_get_current_user();

if ( !($current_user instanceof WP_User) ) 
    return;

`

Mile Milosheski Mile Milosheski
15 нояб. 2021 г. 13:18:58