我正在制作wordpress插件,我想使用短代码在帖子中插入一些非常庞大的代码。我得到了这个模拟我的问题的简单代码
function shortcode_fn( $attributes ) {
wanted();
return "unwanted";
}
add_shortcode( 'simplenote', 'shortcode_fn');
function wanted(){
echo "wanted";
}
并发布此内容
start
[simplenote]
end
给出了这个结果:
wanted
start
unwanted
end
我希望它在开始和结束之间插入“通缉”文本。 我知道最简单的解决办法就是在want()中返回“通缉”,但我已经拥有了所有这些功能而且它们非常庞大。没有从头开始编写所有内容,是否有一个简单的解决方案?
@edit:也许有一些方法可以存储函数中的所有回声而不打印它?
答案 0 :(得分:6)
一个简单的解决方法是使用Output control函数:
function shortcode_fn( $attributes ) {
ob_start(); // start a buffer
wanted(); // everything is echoed into a buffer
$wanted = ob_get_clean(); // get the buffer contents and clean it
return $wanted;
}
答案 1 :(得分:0)
WordPress的标准方式是提供两个功能。一,get_wanted()
将返回想要的字符串;另一个,wanted()
,只是:
function wanted() {
echo get_wanted();
}
所以你可以做到,但只有大部分代码在一个地方。这是WordPress中的常见模式,例如the_title()
与get_the_title()
。
正如@Ruslan所提到的,没有重写现有函数来构建字符串的最标准方法是使用输出控件。
答案 2 :(得分:0)
请点击此链接http://codex.wordpress.org/Shortcode_API#Overview
当显示the_content时,短代码API将解析任何内容 注册的短代码如" [myshortcode]",分开并解析 属性和内容,如果有的话,并传递相应的 短代码处理函数。任何字符串返回(未回显) 短代码处理程序将插入到帖体中代替 短代码本身。
所以所有短代码功能必须返回,你可以改变你的功能"想要"对此:
function wanted(){
return "wanted";
}