2011-03-12 36 views
11

我一直在这一段时间卡住了。我正在开发一个wordpress网站,我从头开始编写主题,我使用php调用来获取某些章节中需要的wordpress功能。do_shortcode不起作用

我想使用插件,但通过

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

只是心不是工作调用它。即使我切换到默认模板并发布该代码,它仍然不起作用。它只是回声"[STORE-LOCATOR]"

任何帮助将不胜感激。

+0

从[文档](http://codex.wordpress.org/Function_Reference/do_shortcode):“如果没有短代码标记定义,则内容将在没有任何过滤的情况下被返回,如果插件被禁用,这可能会导致问题,因为它的短代码仍然会显示在帖子或内容中。 - 插件是否真的活跃? – 2011-03-12 14:10:23

+0

'[STORE-LOCATOR]'是否适用于发布内容? – Dogbert 2011-03-12 14:11:25

+0

是的,它确实显示出来。 – sjobe 2011-03-12 14:12:14

回答

35

[STORE-LOCATOR]可能不是'WordPress的意义上的'短代码'。

我在不同的插件,流媒体播放器上遇到了这个问题。他们使用与简码相同的语法,但实际上并不是。

尝试使用:

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

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

+7

我刚碰到这个确切的(商店定位器)问题,并发现这个问题。这个答案解决了问题,应该是被接受的答案。 – 2013-06-08 00:59:54

+1

这不是公认的答案吗?这工作。我有一个电子商务插件这个问题! 谢谢! – ProblemsOfSumit 2013-10-06 21:07:28

+0

你是朋友,是救世主!谢谢! – NPC 2015-09-16 17:26:14

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

这似乎很好地工作。

13

do_shortcode()返回一个字符串。 我得到它的工作做:

<?php echo do_shortcode(...); ?> 
0
echo do_shortcode('[STORE-LOCATOR][/STORE-LOCATOR]'); 
+0

由于长度限制,您的答案被标记为低质量。尝试更深入地解释你的答案。 – 2018-02-09 14:24:57