Вопрос или проблема
У меня есть рабочий шорткод, например, такой:
[shortcode_name search="" show="url, color, size"]
В этом шорткоде, если я вставлю, например, адрес электронной почты в параметр search (search=”[email protected]“), он отображает все записи с этого e-mail. Если я не укажу ничего, он отображает все записи с всех e-mail.
Я хотел бы вставить переменную, например, search=”‘.$user_email.'”, чтобы отобразить все записи этого вошедшего пользователя.
Как я могу использовать эту переменную?
Я также пытался использовать шорткод, который генерирует e-mail, но как использовать шорткод внутри другого шорткода? Я пробовал [shortcode_name search="[user_email_shortcode]" show="url, color, size"]
, но, конечно, это не сработало.
Как видно, я нашел решение (благодарю amatorpl), если кому-то это нужно:
function show_history() {
$user = wp_get_current_user();
$user_email = $user->user_email;
$show_history = '[shortcode_name search="'.$user_email.'" show="url, color, size"]';
$history = do_shortcode($show_history);
return $history;
}
add_shortcode('show_history', 'show_history');
Спасибо за попытку
Ответ или решение
Ваша проблема с использованием коротких кодов (shortcodes) в WordPress на самом деле может быть решена довольно просто. Давайте разберемся, как интегрировать переменные и использовать один короткий код внутри другого.
Решение:
Когда вы хотите передать переменные в короткий код, вы можете сделать это через создание функции, которая получает информацию о текущем пользователе и генерирует строку с коротким кодом, содержащим нужные параметры. Рассмотрим пример:
function show_history() {
// Получаем текущего пользователя
$user = wp_get_current_user();
$user_email = $user->user_email;
// Формируем короткий код с использованием email пользователя
$show_history = '[shortcode_name search="'.$user_email.'" show="url, color, size"]';
// Выполняем короткий код и сохраняем результат
$history = do_shortcode($show_history);
// Возвращаем итоговый результат
return $history;
}
// Регистрация короткого кода [show_history]
add_shortcode('show_history', 'show_history');
Пояснение к коду:
-
Получение текущего пользователя: Мы используем функцию
wp_get_current_user()
, чтобы получить информацию о текущем пользователе, в частности его адрес электронной почты. -
Создание короткого кода: С помощью переменной
$user_email
мы формируем строку, которая будет служить параметром для другого короткого кода (shortcode_name
), который вы уже имеете. -
Выполнение короткого кода: Используем
do_shortcode()
для выполнения сгенерированного короткого кода. Это позволяет вам динамически передавать email текущего пользователя в ваш исходный короткий код. -
Регистрация нового короткого кода: Наконец, мы регистрируем наш новый короткий код
[show_history]
, который вы можете использовать в любом месте вашего контента WordPress.
Использование короткого кода:
После выполнения этого кода, вы можете просто вставить [show_history]
в любой пост или страницу, где вы хотите отобразить историю пользователя, и это будет генерировать результат, основываясь на email текущего пользователя.
Таким образом, ответ на вашу проблему охватывает как использование переменных внутри коротких кодов, так и внедрение одного короткого кода в другой. Если у вас остались дополнительные вопросы или вам требуется дальнейшая помощь, не стесняйтесь спрашивать!