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