Php Wordpress短代码位于错误的位置
我正在制作wordpress插件,我想用短代码在帖子中插入一些非常庞大的代码。我得到了这个模拟我的问题的简单代码Php Wordpress短代码位于错误的位置,php,wordpress,plugins,shortcode,Php,Wordpress,Plugins,Shortcode,我正在制作wordpress插件,我想用短代码在帖子中插入一些非常庞大的代码。我得到了这个模拟我的问题的简单代码 function shortcode_fn( $attributes ) { wanted(); return "unwanted"; } add_shortcode( 'simplenote', 'shortcode_fn'); function wanted(){ echo "wanted"; } 并发布此内容 start [simplenote] e
function shortcode_fn( $attributes ) {
wanted();
return "unwanted";
}
add_shortcode( 'simplenote', 'shortcode_fn');
function wanted(){
echo "wanted";
}
并发布此内容
start
[simplenote]
end
这就产生了这样的结果:
wanted
start
unwanted
end
我希望它在开始和结束之间插入“通缉”文本。
我知道最简单的解决方案是在want()中返回“want”,但我已经有了所有这些函数,它们非常庞大。有没有一个简单的解决方案,而不必从头开始写
@编辑:也许有什么方法可以将函数的所有回音存储在字符串中而不打印?一个简单的解决方法是使用函数:
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;
}
WordPress的标准方式是提供两个功能。第一,
get_wanted()
将返回所需字符串;另一个是wanted()
,它只是:
function wanted() {
echo get_wanted();
}
因此,您可以选择其中一种,但只能将大部分代码放在一个位置。这是WordPress中的常见模式,例如vs
正如@Ruslan提到的,不重写现有函数来构建字符串的最标准方法是使用输出控制。遵循此链接
当显示_内容时,ShortCodeAPI将解析任何
注册短代码,如“[myshortcode]”,将
属性和内容(如果有),并将其传递给相应的
短代码处理函数。用户返回的任何字符串(不回显)
短代码处理程序将插入到post正文中,以代替
短代码本身
因此,所有短代码函数都必须返回,您可以将函数“想要”更改为:
我不认为有办法解决这个问题,因为生成短代码输出的函数是在页面/帖子内容输出之前执行的,因此在上面的示例中显示了“想要”的原因。我这样做了,并且部分有效。文本在开始和结束之间可见,但它也会在开始之前打印函数。有什么方法可以支持它吗?它应该被抑制。这是原始代码:结果:想要的开始不想要的结束这是与输出缓冲:结果:开始想要不想要的结束它的作品,我的坏:)我用ob_get_内容代替,现在它的作品完美
function wanted(){
return "wanted";
}