我有几次遇到过类似的情况。在我的例子中,在文本编辑器上呈现的短代码是由短代码回显而不是返回其内容引起的。
如上所述add_shortcode
Codex entry,
请注意,由shortcode调用的函数不应产生任何类型的输出。短代码函数应返回用于替换短代码的文本。直接生成输出将导致意外的结果。这类似于过滤器函数的行为方式,因为它们不应该在调用中产生预期的副作用,因为您无法控制从何时何地调用它们。
我的建议是,仔细检查短代码的输出,以便它返回内容,而不是重复它。
如果它在回显输出,而您不想重写所有内容,您可以将回显封装在输出缓冲区中,就像这样。
function some_shortcode( $atts, $content = null ) {
// start output buffer, which will hold all the following echoed html
ob_start();
// old code echoing html
// return html content from buffer and clear buffer
return ob_get_clean();
}
如果这没有帮助,那么请共享您的代码,以便社区可以更好地查看它。