it-swarm.com.ru

do_shortcode не работает

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

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

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

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

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

12
sjobe

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

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

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

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

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

40
birdsonwire

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

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

Это относится к плагину 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]');

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

2
gbanks
echo do_shortcode('[STORE-LOCATOR][/STORE-LOCATOR]');
0
Fabio

Если вы пишете все с нуля, вам нужно убедиться, что созданная вами функция находится в корневом 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
PhysicsIsRelativelyCool