WordPress有一个名为wpautop
的内置过滤器,可以在可视化模式下添加文本。此函数添加
上述链接还提供了删除此筛选器的功能:
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );
但是,当指定内容时,此函数会从所有内容中删除过滤器。
我需要修改代码以针对具有特定类的某个div
。
我用一个div class="排除-wpautop"包装了我想要排除过滤器的文本
remove_filter( 'exclude-wpautop', 'wpautop' );
但这不起作用。
另外,正如我在这里的另一个问题中提到的,我尝试创建一个短代码来针对这个div
标记,但它也不起作用。
function stop_wpautop(){
remove_filter( 'exclude-wpautop', 'wpautop' );
}
add_shortcode( 'stop-wpautop', 'stop_wpautop');
是否有方法针对特定的div
并对其应用该函数?或者创建一个短代码,当它包装文本时,它仅对这部分文本停止wpautop
的效果?
提前谢谢。
首先,remove_filter的第一个参数是过滤器名称,而不是HTML元素的类名。
因为wpautop()不会处理HTML
<div class="exclude-wpautop">...</div>
具有
<pre class="exclude-wpautop">...</pre>
然后,您可以更改
add_filter( 'the_content', 'rewrite_pre_exclude_wpautop', 11 );
其中rewrite_pre_exclude_wpautop()只是替换你的临时
rewrite_pre_exclude_wpautop()看起来像这样:
add_filter( 'the_content', 'rewrite_pre_exclude_wpautop', 11 );
function rewrite_pre_exclude_wpautop( $content ) {
$pre = '<pre class="exclude-wpautop">';
$len = strlen( $pre );
$pos = 0;
while ( ( $pos = strpos( $content, $pre, $pos ) ) !== FALSE ) {
$content = substr_replace( $content, '<div>', $pos, ? );
$pos += ?;
$pos = strpos( $content, '</pre>', $pos );
$content = substr_replace( $content, '</div>', $pos, ? );
$pos += ?;
}
return $content;
}
如何从添加标记中排除内容块
在您的帖子中,您可以添加标签
例子:
<pre> your any content and any html tags, without adding tag p </pre>
然后将下面的代码添加到函数中。php删除所有标签
add_filter( 'the_content', 'al_wputopfix', 999);
//AL wputop fix
function al_wputopfix ($content) {
if ( stripos( $content, '<pre>' ) !== false ){
$content = preg_replace( '~<pre>|</pre>~', '', $content );
}
return $content;
}