Переменная внутри шорткода или шорткод внутри шорткода

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

У меня есть рабочий шорткод, например, такой:

[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'); 

Пояснение к коду:

  1. Получение текущего пользователя: Мы используем функцию wp_get_current_user(), чтобы получить информацию о текущем пользователе, в частности его адрес электронной почты.

  2. Создание короткого кода: С помощью переменной $user_email мы формируем строку, которая будет служить параметром для другого короткого кода (shortcode_name), который вы уже имеете.

  3. Выполнение короткого кода: Используем do_shortcode() для выполнения сгенерированного короткого кода. Это позволяет вам динамически передавать email текущего пользователя в ваш исходный короткий код.

  4. Регистрация нового короткого кода: Наконец, мы регистрируем наш новый короткий код [show_history], который вы можете использовать в любом месте вашего контента WordPress.

Использование короткого кода:

После выполнения этого кода, вы можете просто вставить [show_history] в любой пост или страницу, где вы хотите отобразить историю пользователя, и это будет генерировать результат, основываясь на email текущего пользователя.

Таким образом, ответ на вашу проблему охватывает как использование переменных внутри коротких кодов, так и внедрение одного короткого кода в другой. Если у вас остались дополнительные вопросы или вам требуется дальнейшая помощь, не стесняйтесь спрашивать!

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

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