Передать динамическую переменную PHP в шорткод

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

Я не уверен, есть ли простое решение моей проблемы. Требование выглядит простым, но я не могу найти ответ, даже после шести часов мучений.
Мне нужно передать переменную из функции PHP в шорткод, а этот шорткод должен передать эту переменную в другой шорткод. Шорткод-1 откроет всплывающее окно, а контент этого окна создается шорткодом-2, и содержимое должно изменяться в зависимости от переменной. Как я могу этого добиться?

Код в моем шаблоне..

 <a href="#" class="open-popup-1" variable= <?php getid(); ?>"> <?php  echo "Нажмите здесь"?> </a> 

шорткод всплывающего окна:

[modifycontent id=$variable] 

Моя функция шорткода

function modifycontent($atts = [], $content = null)
{
// делаем что-то с $content

 $var = atts['id']; 

 $content = gettherightcontent($var); 
 return $content;
}
add_shortcode('mc', 'modifycontent');

Я попробовал так, я смог вызвать мой шорткод, но не смог передать переменную.

Я вижу несколько ошибок в вашем коде…

  1. в html не было кавычек перед переменной

  2. в php вы говорите, что вызываете шорткод [modifycontent], но по вашему php вам следовало использовать [mc].

Тем не менее, вот как бы я это сделал:

function modifycontent ($atts, $content = null ) {
    $a = shortcode_atts( 
    array(
         'id' => '1',
        ), 
      $atts );

    return '<a href="#" class="open-popup-1" variable="'.$a['id'].'">Нажмите здесь</a>';
}
add_shortcode( 'mc-shortcode', 'modifycontent' );

это будет использовать шорткод [mc-shortcode] для возврата:

<a href="#" class="open-popup-1" variable="1">Нажмите здесь</a>

Если вы используете это для шорткода: [mc-shortcode id=’1′]

это вернет:

<a href="#" class="open-popup-1" variable="2">Нажмите здесь</a>

(Обратите внимание, что переменная изменяется)

Ответ или решение

Чтобы передать динамическую переменную из PHP функции в шорткод и затем использовать её в другом шорткоде, можно воспользоваться следующими шагами. Предположим, что у нас есть два шорткода: первый открывает всплывающее окно, а второй генерирует контент для этого окна на основе переданной переменной.

Шаг 1: Создание шорткода для всплывающего окна

Сначала мы создадим наш первый шорткод, который будет генерировать ссылку для открытия всплывающего окна. В данном случае он будет принимать параметр id.

function open_popup_shortcode($atts) {
    $a = shortcode_atts(array(
        'id' => '1',
    ), $atts);

    // Возвращаем HTML-код ссылки со встроенной переменной
    return '<a href="#" class="open-popup-1" data-variable="' . esc_attr($a['id']) . '">Click here</a>';
}
add_shortcode('open_popup', 'open_popup_shortcode');

Шаг 2: Создание шорткода для генерации контента

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

function modify_content_shortcode($atts, $content = null) {
    $a = shortcode_atts(array(
        'id' => '1',
    ), $atts);

    // Получаем контент на основе переданного id
    $content = get_the_right_content($a['id']);
    return $content;
}
add_shortcode('modifycontent', 'modify_content_shortcode');

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

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

echo do_shortcode('[open_popup id="2"]'); // Это создаст ссылку с ID = 2

Шаг 4: Использование JavaScript для открытия всплывающего окна

Для того чтобы ваше всплывающее окно отображалось, вам нужно написать небольшую часть JavaScript, которая будет обрабатывать клик по ссылке и вызывать необходимый контент через второй шорткод.

document.addEventListener('DOMContentLoaded', function() {
    document.querySelectorAll('.open-popup-1').forEach(function(link) {
        link.addEventListener('click', function(event) {
            event.preventDefault();
            var variable = this.getAttribute('data-variable');

            // Получаем контент нашего второго шорткода
            var content = '[modifycontent id="' + variable + '"]'; // Создаем шорткод
            var popupContent = do_shortcode(content); // Вызываем контент шорткода и вставляем в всплывающее окно

            // Здесь можно добавить код для отображения всплывающего окна и вставки контента
            showPopup(popupContent);
        });
    });
});

Заключение

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

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

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