do_shortcode无效

时间:2011-03-12 14:08:33

标签: php wordpress-plugin wordpress

我已经坚持了一段时间。我正在一个wordpress网站上工作,我从头开始编写主题,我使用php调用来获取我在某些部分需要的wordpress功能。

我正在尝试使用插件,但是通过

调用它
echo do_shortcode('[STORE-LOCATOR]');

只是不工作。即使我切换到默认模板并发布该代码,它仍然无法正常工作。它简单地回应了"[STORE-LOCATOR]"

非常感谢任何帮助。

5 个答案:

答案 0 :(得分:41)

在WordPress意义上,

[STORE-LOCATOR]可能不是'短代码'。

我在不同的插件,Stream媒体播放器上遇到过这种情况。它们使用与短代码相同的语法,但实际上并非如此。

尝试使用:

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

而不是do_shortcode,看看是否有帮助。

答案 1 :(得分:16)

do_shortcode()返回一个字符串。 我通过这样做来实现:

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

答案 2 :(得分:2)

这特定于商店定位器插件,而不是do_shortcode

apply_filters可以是其他插件的可接受的解决方法,但这对Store Locator不起作用;你只会看到一个空的空间和一些控件。这是因为它正在页面/帖子正文中查找该短代码,以确定是否在页面顶部包含其所有js引用。没有这些参考,没有任何东西可行。请参阅sl-functions.php中的sl_head_scripts函数。

要更改此行为,只需根据页面标题修改该功能即可。在我的实例中,我只希望它在“商店”页面上,所以我评论了整个$on_sl_page测试并将其替换为:

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

然后,我使用apply_filters从我的页面调用它,如另一个答案中所示:

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

这似乎完美无缺。

答案 3 :(得分:0)

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

答案 4 :(得分:-1)

如果要从头开始编写整个内容,则需要确保创建的功能位于插件的根php文件中。该函数可能看起来像这样,但是您必须使用任何逻辑来细分到商店位置:

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

然后在您的模板中输入代码:

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

祝您编程愉快,万事如意!