Получение email текущего пользователя в виде строкового значения
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);
}
Вам следует использовать wp_get_current_user
, а не глобальную переменную $current_user
.

Скачайте/установите плагин WordPress PHPCode Snippets, затем создайте шорткод с таким содержимым (точно как показано ниже):
<?php
// Получаем текущего пользователя
$current_user = wp_get_current_user();
// Выводим email пользователя
echo $current_user->user_email;

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

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

Если вам нужно просто "Получить 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.
