do_shortcode не работает - PullRequest
       4

do_shortcode не работает

12 голосов
/ 12 марта 2011

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

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

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

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

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

Ответы [ 5 ]

41 голосов
/ 03 сентября 2012

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

Я сталкивался с этим на другом плагине Stream Media Player. Они используют тот же синтаксис, что и шорткоды, но на самом деле это не так.

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

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

вместо do_shortcode, и посмотрите, поможет ли это.

16 голосов
/ 23 сентября 2015

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

<?php echo do_shortcode(...); ?>
2 голосов
/ 18 февраля 2014

Это относится только к плагину Store Locator, но не do_shortcode в целом.

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

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

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

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

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

И это, кажется, работает отлично.

0 голосов
/ 29 ноября 2018

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

<?php
function doCoolStuff () {
$var1 = "value1";
$var2 = "value2";
$output = $var1+$var2;
}
return $output;
}
add_shortcode('SOTRE-LOCATIOR', 'doCoolStuff');
?>

Затем в вашем шаблоне введите код:

<?php echo do_shortcode('[STORE-LOCATOR]');?>

Удачного кодирования и удачи!

0 голосов
/ 09 февраля 2018
echo do_shortcode('[STORE-LOCATOR][/STORE-LOCATOR]');
...