我想在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");
答案 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帖子的可视化编辑器中使用,但是当您通过访问该帖子实际在浏览器中看到帖子时,您可以看到它正常工作。