Profile Image
3
Josephin DoeTyping . .
Profile Image
1
Lary Doeonline
Profile Image
Aliceonline
Profile Image
1
Alia10 min ago
Profile Image
Suzen15 min ago
Profile Image
3
Josephin DoeTyping . .
Profile Image
1
Lary Doeonline
Profile Image
Aliceonline
Profile Image
1
Alia10 min ago
Profile Image
Suzen15 min ago
Profile Image
3
Josephin DoeTyping . .
Profile Image
1
Lary Doeonline
Profile Image
Aliceonline

New Group

New Contact

Profile Image

Josephin Doei am not what happened . .

Profile Image
Lary DoeAvalable
Profile Image
Alicehear using Dasho
A
AliaAvalable
Profile Image
SuzenAvalable
JD
Josephin DoeDon't send me image
Profile Image
Lary Doenot send free msg
Desktop settings

You get latest content at a time when data will updated

Application settings

Automaticaly take backup as par schedule

System settings

Allow to show public user message

Josephin Doe
Profile Image

hello tell me something

about yourself?

8:20 a.m.

Ohh! very nice

8:22 a.m.

Profile Image
Profile Image

can you help me?

8:20 a.m.

wp去除代码块中的p标签

文章详情

需要确保在处理代码块时,我们不会直接去除内容,而是禁用代码块内的自动 p 标签,同时保留代码内容。

为了解决这个问题,我们可以:
1. **先让文章的所有内容使用 `wpautop`**,以确保自动 p 标签的生成。
2. **然后单独处理代码块**,去除代码块内的自动 p 标签,同时保留代码块的内容。

下面是经过调整后的解决方案:

function disable_wpautop_for_code_highlight($content) {
    global $post;

    // 如果文章中包含 'code_highlight' 短代码
    if (has_shortcode($post->post_content, 'code_highlight')) {
        
        // 使用正则表达式找到所有的代码块
        $pattern = '/(\[code_highlight.*?\])(.*?)(\[\/code_highlight\])/is';
        
        // 首先对文章整体应用 wpautop,保留段落自动生成
        $content = wpautop($content);
        
        // 回调函数用于处理代码块,禁用 wpautop 但保留代码内容
        $content = preg_replace_callback($pattern, function($matches) {
            // 禁用代码块中的 <p> 标签
            $code_content = $matches[2];
            $code_content = strip_tags($code_content, '<pre><code>'); // 只保留<pre>和<code>标签
            
            // 返回完整的代码块短代码,并保留其中内容
            return $matches[1] . $code_content . $matches[3];
        }, $content);
    }

    return $content;
}

add_filter('the_content', 'disable_wpautop_for_code_highlight', 9);

代码逻辑说明:

1. **`wpautop($content)`**:先对整个文章应用 `wpautop`,以确保文章中的普通段落生成 p 标签。
2. **正则表达式**:找到 `code_highlight` 短代码,匹配内容并禁用自动生成的 p 标签,防止代码被错误处理。
3. **`strip_tags`**:确保代码块中的内容不会被错误地包裹 p 标签。

这个版本应该可以正确处理代码块,同时保留其他文章内容中的 p 标签。

Tags:

发表评论