Добавление шорткода внутри Raw HTML в Visual Composer
Я использую Visual Composer и вставил HTML в элемент Raw HTML для создания пользовательской таблицы цен - теперь я хочу использовать плагин World Currency для отображения цен в разных валютах.
Шорткод для World Currency выглядит так:
[worldcurrency curr="EUR" value="25"]
Когда я вставляю его в Raw HTML, он отображается как текст точно так же, как показано выше.
Если я вставляю его используя:
<?php echo do_shortcode('[worldcurrency curr="EUR" value="25"]'); ?>
ничего не отображается, и при проверке исходного кода весь echo закомментирован в HTML.
Я также пробовал вставить HTML в текстовый блок, но такие элементы как подсказки больше не работают должным образом, а при вводе в текстовом режиме вместо визуального я полностью теряю возможность редактировать текст.
Есть ли способ использовать шорткод внутри Raw HTML или другого элемента в Visual Composer, который позволит мне использовать шорткод и HTML?

Если посмотреть, как на самом деле работает функция do_shortcode()
, то её синтаксис следующий:
do_shortcode( $content )
Где $content
определяется как:
(string)
Контент, в котором нужно искать шорткоды
Вы же пытаетесь использовать echo
для того, что делает шорткод, что приводит к ошибочному предположению. Нет никакой волшебной функции, которая автоматически обнаружит ваш шорткод. Шорткод — это просто callback-функция (функция или метод), привязанная к определённой строке, которую можно поместить в квадратные скобки внутри текстового контента. Когда контент обрабатывается во время жизненного цикла/выполнения и находит эту строку, то привязанная callback-функция выполняется вместо неё. Почти то же самое происходит с действиями (actions) и фильтрами (filters). Например:
add_shortcode( 'bartag', 'bartag_func' );
позволяет использовать:
[bartag foo="bar"]
где bartag_func
— это callback-функция. Например:
function bartag_func( $atts )
{
$args = shortcode_atts( array(
'foo' => 'no foo',
'baz' => 'default baz',
), $atts );
return "foo = {$args['foo']}";
}
Что вам нужно (или следует) искать — это место, где шорткод добавляется с помощью add_shortcode()
. Затем просто найдите callback-функцию (например, bartag_func()
) и выполните или выведите её:
echo bartag_func();
Вот и всё.
