- A+
WordPress小教程在文章中插入HTML/PHP代码。如果不使用插件的话,在文章中和评论中是无法插入一些 PHP、CSS、HTML、JS 等代码的,就算使用了 code 或 pre 标签也不行,因为 WordPress 自身有一个强大的 HTML 标签过滤系统,你插入的 html 或者 PHP 标签会直接消失;
将下面的代码加入主题的functions.php中,然后使用code或者pre标签来插入代码即可:
参考一:
// 转换 code 标签中的 html 代码
add_filter('pre_comment_content', 'lxtx_encode_code_in_posts_comments');
add_filter('the_content', 'lxtx_encode_code_in_posts_comments');
function lxtx_encode_code_in_posts_comments($source) {
$encoded = preg_replace_callback('/(.*?)<\/code>/ims',
create_function(
'$matches',
'$matches[1] = preg_replace(
array("/^[\r|\n]+/i", "/[\r|\n]+$/i"), "",
$matches[1]);
return "" . esc_html( $matches[1] ) . "
";'
),
$source);
if ($encoded)
return $encoded;
else
return $source;
}
参考二:
// 转换 pre 标签中的html代码
// 使用'the_content'钩子.
add_filter( 'the_content', 'pre_content_filter', 0 );
function pre_content_filter( $content ) {
return preg_replace_callback( '|
参考三:
// 转换 code 标签中的 html 代码
add_filter('pre_comment_content', 'encode_code_in_comment');
function encode_code_in_comment($source) {
$encoded = preg_replace_callback('/(.*?)<\/code>/ims',
create_function('$matches', '$matches[1] = preg_replace(array("/^[\r|\n]+/i", "/[\r|\n]+$/i"), "", $matches[1]);
return "" . htmlentities($matches[1]) . ""."code>";'), $source);
if ($encoded)
return $encoded;
else
return $source;
}
// 转换 pre 标签中的 html 代码
// 文章和评论
function meow_prettify_esc_html($content){
$regex = '/(]*?class\s*?=\s*?[",\'].*?prettyprint.*?[",\'].*?>)(.*?)(<\/pre>)/sim';
return preg_replace_callback($regex, 'meow_prettify_esc_callback', $content);}
function meow_prettify_esc_callback($matches){
$tag_open = $matches[1];
$content = $matches[2];
$tag_close = $matches[3];
$content = esc_html($content);
return $tag_open . $content . $tag_close;}
add_filter('the_content', 'meow_prettify_esc_html', 2);
add_filter('comment_text', 'meow_prettify_esc_html', 2);
pre和code可以根据需要修改代码中的正规则匹配
- 我的微信公众号
- 扫一扫关注
- 我的新浪微博号
- 扫一扫关注