Do_shortcode не работает

Я застрял на этом некоторое время. Я работаю над сайтом wordpress, где я написал тему с нуля, я использую php-вызовы, чтобы получить функциональность wordpress, которая мне нужна в определенных разделах.

Я пытаюсь использовать плагин, но вызываю его через

echo do_shortcode('[STORE-LOCATOR]');

просто не работает. Даже когда я переключаюсь на шаблон по умолчанию и публикую этот код, он все равно не работает. Он просто перекликается с "[STORE-LOCATOR]"

Любая помощь будет принята с благодарностью.

Ответ 1

[STORE-LOCATOR], вероятно, не является "коротким кодом" в смысле WordPress.

Я столкнулся с этим на разных плагинах, Stream media player. Они используют тот же синтаксис, что и shortcodes, но на самом деле это не так.

Попробуйте использовать:

echo apply_filters( 'the_content',' [STORE-LOCATOR] ');

вместо do_shortcode и посмотрите, помогает ли он.

Ответ 2

do_shortcode() возвращает строку. Я получаю это от работы:

<?php echo do_shortcode(...); ?>

Ответ 3

Это специфично для плагина Store Locator, а не do_shortcode в целом.

apply_filters может быть приемлемым решением для других плагинов, но это не работает для Store Locator; вы увидите только пустое место и некоторые элементы управления. Это связано с тем, что он ищет этот короткий код в теле страницы/сообщения, чтобы определить, включать ли все ссылки на js в верхней части страницы. И без этих ссылок ничего не получится. См. Функцию sl_head_scripts в sl-functions.php.

Чтобы изменить это поведение, просто измените эту функцию, чтобы она соответствовала основанию на названии страницы. В моем случае я хотел это только на странице "shop", поэтому я прокомментировал весь тест $on_sl_page и заменил его на это:

$on_sl_page = ( strpos($pagename, 'shop') === 0 );

Затем я назвал его с моей страницы с помощью apply_filters, как указано в другом ответе:

echo apply_filters( 'the_content','[STORE-LOCATOR]');

И это работает отлично.

Ответ 4

echo do_shortcode('[STORE-LOCATOR][/STORE-LOCATOR]');