短代码不能在wordpress文本编辑器中工作

时间:2014-02-19 14:36:29

标签: php wordpress shortcode

我想在wordpress post的文本编辑器中添加短代码。我在wordpress的帖子中添加了以下短代码:

<img alt="" src="[template_url]/images/ic_sol_1a.png" />

这里[template_url]是我想要使用的短代码无效。当我在帖子页面中看到它时,它会呈现文本而不是短代码响应。在某个地方,我看到了一个解决方案,比如在主题的function.php中添加以下行:

add_filter( 'widget_text', 'shortcode_unautop');

add_filter( 'widget_text', 'do_shortcode');

但是在添加这些行之后仍然无法使短代码工作。可能的原因是什么?

我的短代码功能是这样的:

function my_template_url() {
  return get_bloginfo('template_url'); 
}
add_shortcode("template_url", "my_template_url");

2 个答案:

答案 0 :(得分:2)

您需要使用get_bloginfo()返回示例中的值,并确保使用the_content()将值打印到页面。如果您使用其中一种API方法,例如get_the_content(),则不会运行do_shortcode过滤器。如果要应用它,请使用以下命令:

function my_template_url() {
    // This will echo the 'template_url'
    return get_bloginfo('template_url'); 
}
add_shortcode("template_url", "my_template_url");

$shortcoded = apply_filters( 'the_content', get_the_content() );

您不需要add_filter()行。

答案 1 :(得分:1)

经过很多头痛并在@doublesharp和@Nathan Dawson评论/答案的帮助下,我们发现问题出现在single.php主题文件中我们正在使用get_the_content函数获取帖子的内容。通过将其更改为the_content()函数排序码开始工作。 请注意该短代码无法在管理网站上的WordPress帖子的可视化编辑器中使用,但是当您通过访问该帖子实际在浏览器中看到帖子时,您可以看到它正常工作。