Добавление шорткода внутри Raw HTML в Visual Composer

7 февр. 2015 г., 23:36:03
Просмотры: 25.4K
Голосов: 2

Я использую 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?

0
Все ответы на вопрос 1
0

Если посмотреть, как на самом деле работает функция 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();

Вот и всё.

8 февр. 2015 г. 01:21:36