Wordpress短信在错误的地方

时间:2014-04-28 06:51:13

标签: php wordpress plugins shortcode

我正在制作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:也许有一些方法可以存储函数中的所有回声而不打印它?

3 个答案:

答案 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";
}