Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/252.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 函数可从特定div标记中删除wpautop_Php_Wordpress - Fatal编程技术网

Php 函数可从特定div标记中删除wpautop

Php 函数可从特定div标记中删除wpautop,php,wordpress,Php,Wordpress,WordPress有一个内置的过滤器,名为wpautop,它有助于在“可视”模式下添加文本。此函数将和添加到段落中,以提供“如果您得到什么,您会看到什么”输出。 上述链接还提供了删除此筛选器的功能: remove_filter( 'the_content', 'wpautop' ); remove_filter( 'the_excerpt', 'wpautop' ); 但是,当指定内容时,此函数会从所有内容中删除过滤器 我需要修改代码以针对具有特定类的某个div 我用div class=“e

WordPress有一个内置的过滤器,名为
wpautop
,它有助于在“可视”模式下添加文本。此函数将

添加到段落中,以提供“如果您得到什么,您会看到什么”输出。

上述链接还提供了删除此筛选器的功能:

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );
但是,当指定内容时,此函数会从所有内容中删除过滤器

我需要修改代码以针对具有特定类的某个
div

我用
div class=“exclude wpsautop”>
包装了要从中排除过滤器的文本,并将函数修改为:

remove_filter( 'exclude-wpautop', 'wpautop' );
但这不起作用

此外,我还尝试创建一个短代码来针对这个
div
标记,但它也不起作用

function stop_wpautop(){
remove_filter( 'exclude-wpautop', 'wpautop' );
}
add_shortcode( 'stop-wpautop', 'stop_wpautop'); 
是否有方法针对特定的
div
并对其应用该函数?或者创建一个短代码,当它包装文本时,它仅对这部分文本停止
wpautop
的效果


提前感谢。

首先,删除过滤器的第一个参数是过滤器名称,而不是HTML元素的类名

因为wpautop()不会处理HTML

<div class="exclude-wpautop">...</div>
其中rewrite_pre_exclude_wpautop()只需将临时的
标记替换为
标记

rewrite_pre_exclude_wp autop()如下所示:

add_filter('the_content','rewrite_pre_exclude_wp autop',11);
函数重写\u预\u排除\u wpautop($content){
$pre='';
$len=strlen($pre);
$pos=0;
while(($pos=strpos($content,$pre,$pos))!==FALSE){
$content=substr_replace($content,,$pos,);
$pos+=?;
$pos=strpos($content,,$pos);
$content=substr_replace($content,,$pos,);
$pos+=?;
}
返回$content;
}

这可能会对您有所帮助:非常感谢。我将
add_filter
行添加到我的
functions.php
中,并将
div
替换为
pre
,但最终结果是。你能详细说明我应该做什么吗?谢谢。您必须编写函数rewrite\u pre\u exclude\u wp autop。它不是预定义的函数。你知道PHP吗?不,我没有写过。我知道非常基本的php。我认为这是一个预定义的php函数。你能告诉我怎么写吗?有推荐人吗?非常感谢。您知道如何使用PHP函数strps()和substr_replace()?您需要使用这些函数来查找标记并用标记替换它们。我认为它可以用7行PHP完成。我认为你应该努力自己写这篇文章。如有必要,我将进一步帮助你。这是一个非常初级的PHP,虽然它需要仔细跟踪字符位置,所以需要做一些工作才能正确地完成,但这是你应该自己做的工作。实际上,14行PHP代码。代码是基本的,但需要仔细考虑字符串偏移量,这对于不擅长数学的人来说可能很困难。
<pre class="exclude-wpautop">...</pre>
add_filter( 'the_content', 'rewrite_pre_exclude_wpautop', 11 );
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;
}