只去掉特定标签(如<p>),但保留其他标签(如<br/>)

时间:2016-12-09 作者:vyperlook

我知道很容易禁止Wordpress同时添加pbr 标记为:

remove_filter( \'the_content\', \'wpautop\' );
remove_filter( \'the_excerpt\', \'wpautop\' );
但我希望Wordpress继续添加<br> 有断线的地方。我只使用文本编辑器,禁用了可视化编辑器。在Wordpress 4.7的最新更新之前,它工作得很好-现在它添加了一些结尾p 标签,无需像</p> .

甚至尝试过this 插件,但它也禁用br标记。

任何只是禁用的方式p 标记不是br 帖子内容中的标签?我在互联网上找不到任何关于解决方案的信息。

2 个回复
最合适的回答,由SO网友:T.Todua 整理而成

你最好不要禁用那些操作(你说的)。而是插入add_filter(\'the_content\', \'MyFilter\', 88 ); 并创建这样的功能:

function MyFilter($content){
    $tags = array( \'p\', \'span\');
    ///////////////////////////////////////////////////
    ///////// HERE INSERT ANY OF BELOW CODE  //////////
    ///////////////////////////////////////////////////
    return $content;
}
方法1=========
$content= preg_replace( \'#<(\' . implode( \'|\', $tags) . \')(.*|)?>#si\', \'\', $content);
$content= preg_replace( \'#<\\/(\' . implode( \'|\', $tags) . \')>#si\', \'\', $content);
方法2======
foreach ($tags as $tag) {
    $content= preg_replace(\'#<\\s*\' . $tag . \'[^>]*>.*?<\\s*/\\s*\'. $tag . \'>#msi\', \'\', $content);
}
方法3=========DOM 对象(首选):https://stackoverflow.com/a/31380542/2377343

SO网友:Maqk

“The\\u content”过滤器用于过滤过滤功能所在帖子的内容your_prefix_ptagfix 强制查找<p> 短代码开头标记前后的标记。

将以下代码添加到函数文件中,如果有帮助,请告诉我。

add_action( \'after_setup_theme\', \'your_prefix_theme_setup\' );
function your_prefix_theme_setup(){
    add_filter( \'the_content\', \'your_prefix_ptagfix\' );

}

function your_prefix_ptagfix($content){   
    $array = array (
        \'<p>[\' => \'[\', 
        \']</p>\' => \']\',
    );

    $content = strtr($content, $array);
    return $content;
}

相关推荐

使用html内部的短码功能

我知道我不擅长编码,但我尝试了在互联网上找到的任何东西,最终我得到了这个结果,这并没有给出一个错误,而且当在帖子中使用快捷码[我的播放列表]时,只有一部分显示“my\\u playlist”;聆听来自PostName的满分歌曲播放列表;你能告诉我我做错了什么吗?我应该如何在\\u title()之后生成其余的html;陈列非常感谢你 // function that runs when shortcode is called function wpb_playlist_shortcode(