You get latest content at a time when data will updated
Automaticaly take backup as par schedule
Allow to show public user message
需要确保在处理代码块时,我们不会直接去除内容,而是禁用代码块内的自动 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: wp