如何从短码内容中删除该段落?

时间:2011-06-20 作者:SpyrosP

如果您已经在Wordpress中创建了短代码,您可能已经注意到,当您获得短代码的内容时,它会被包装在html段落标记中。

我不知道节目主持人为什么那样做。对我来说,在实际内容中添加格式似乎是一个非常糟糕的主意。

我找到了一篇介绍此解决方案的帖子:

http://donalmacarthur.com/articles/cleaning-up-wordpress-shortcode-formatting/

但我想知道:wordpress API本身是否提出了一个解决方案,或者我在这里遗漏了什么?

3 个回复
最合适的回答,由SO网友:Daniel Sachs 整理而成

由于短代码插入到编辑器中,因此它们符合编辑器规则。在编辑器中点击return将生成一个段落标记,就像任何其他文本一样。这是TinyMCE的特点之一。要了解有关TinyMCE的更多信息,请查看their forum 尤其是this thread

SO网友:ptim

“你的问题”中的链接现在已经消失了,所以我不确定它建议的解决方案,但下面是another solution 为子孙后代:

将以下内容添加到函数中。php在计算短代码后运行格式化:

remove_filter( \'the_content\', \'wpautop\' );
add_filter( \'the_content\', \'wpautop\' , 12);
作者指出,您需要在需要格式化的插件中显式启用格式化:

function my_shortcode($atts) {
    $content = wpautop(trim($content));
    [snip]

SO网友:Davor Bokun

对我来说,一个简单的解决办法就是删除段落结尾</p>"E;从$内容开始,段落开始<;p>"E;从$内容的末尾开始。

例如,使用类似regex的:

function fix_paragraphs($content)
{
    $patterns = array(\'/^<\\/p>/i\', \'/<p>$/i\');
    return preg_replace($patterns, \'\', $content);
}
或者,如果你确定它们会在那里,你可以这样修剪它们:

return substr($content, 4, -3);

结束

相关推荐

Nested Shortcode Detection

如果您熟悉此代码<?php $pattern = get_shortcode_regex(); preg_match(\'/\'.$pattern.\'/s\', $posts[0]->post_content, $matches); if (is_array($matches) && $matches[2] == \'YOURSHORTCODE\') { //shortcode is being used }&#