WordPress评论文字自动替换

日期: 标签:WordPress教程
如需帮忙改代码,或者WordPress二次开发、PHP网站建设等需求,可联系我购买付费服务:  点此联系我
文章目录

    如果你的WordPress博客是搭建在国内的主机上,那么你得注意一下你的网站内容了,必须接受国内相关机构的监管,如果你的网站如果出现了某某非法关键字,那么你的网站可能很快就要被关停了。当然这只是一方面,WordPress的文章评论区是一个相对自由的地方,你可能很难监管到,还可能会出现一些庸俗、谩骂的内容,你可以将这些给替换掉,不必删除整条评论,这样既可以继续开启评论功能,又可以消除影响。

    之前我写的插件WordPress评论过滤插件 – 大篱,就有这样的一个功能,但这是一个多合一功能的插件,可能你只需要其中的评论关键字过滤功能,那么你可以选择以下任一方法操作:

一、评论显示时替换

    此方法不会更改评论的原始内容,只会在评论显示给访客时替换相应的关键字,你在后台看到的仍然是评论的原文。在主题目录下的functions.php中将最后一个 ?> 替换成:

/**
 * 名称:WordPress评论文字自动替换
 * 作者:露兜
 * 博客:https://www.ludou.org/
 * 最后修改:2011年2月20日
 */
function dali_conents_replace($incoming_comment) {
	$words = '这里填替换规则';
	$rules = explode('||', $words);

	foreach($rules as $rule) {
		$word = explode('->', trim($rule));

		if(isset($word[1]))
			$incoming_comment = str_replace(trim($word[0]), trim($word[1]), $incoming_comment);
	}

	return $incoming_comment;
}
add_filter( 'comment_text', 'dali_conents_replace' );
add_filter( 'comment_text_rss', 'dali_conents_replace' );
?>

    请将以上代码中第2行中这里填替换规则替换成你自己的规则,规则请按以下格式填写:

关键字A->替换A || 关键字B->替换B || 关键字C->替换C

    关键字A在实际显示时将被替换成替换A,依此类推,多个替换规则之间请用 || 隔开。示例:

$words = '傻逼->牛逼 || shit->haha';

二、评论添加时替换

    此方法将直接替换访客发布的评论内容,数据库中存储的评论就是替换后的内容,在主题目录下的functions.php中将最后一个 ?> 替换成:

/**
 * 名称:WordPress评论文字自动替换
 * 作者:露兜
 * 博客:https://www.ludou.org/
 * 最后修改:2011年2月20日
 */
function dali_conents_replace($incoming_comment) {
	$words = '这里填替换规则';
	$rules = explode('||', $words);

	foreach($rules as $rule) {
		$word = explode('->', trim($rule));

		if(isset($word[1]))
			$incoming_comment['comment_content'] = str_replace(trim($word[0]), trim($word[1]), $incoming_comment['comment_content']);
	}

	return $incoming_comment;
}

add_filter( 'preprocess_comment', 'dali_conents_replace' );
?>

    替换规则的书写方式请参考以上的方法一。

-- 完 --

本文采用 「CC BY-NC-SA 4.0」创作共享协议,转载请标注以下信息:
原文出处:露兜即刻 https://www.ludou.org/wordpress-comment-text-replace.html
露兜
kaapass@outlook.com  QQ 825533758

业余编程爱好者。

28 条留言

点此留言
  1. 青刀刀 青刀刀

    哈哈哈,这替换。。原本夸奖博主“牛b”的,博主也会一肚子郁闷~~

  2. 一灰 一灰

    唉,以后都要用组列阵服务器来储存特殊的关键词了~

    • iove86 iove86

      @一灰 真要做到相关方面满意,我看只有把那个强大的关键词过滤系统共享出来做个无敌插件

  3. wushui wushui

    怎么我感觉有点看不太懂啊

    • Ludou

      @wushui 怎么我感觉你是为了打广告而评论的啊

      • 手机糖tang 手机糖tang

        @Ludou 哈哈哈~这帮子牛人~

  4. 最弱 最弱

    好东西啊!

  5. Felix

    简单实用。不过还是要人工审核的。

  6. 主题啦 主题啦

    同样适合在国外的用户,国外对版权更加重视,感谢分享!

  7. 谷歌网友

    非常实用的东西!

  8. 宇宙弦

    这个是越来越重要的。
    就算主机放在国外,只要用户是在国内的还是应该加强管理一下评论。
    毕竟这些不是自己意料中的内容。
    敏感词多了,触发了房伙强屏蔽也很麻烦。

  9. yesureadmin yesureadmin

    建议搞一个和谐词表啊,这样自己想想不出几个,这个意义就不大了啊

  10. MK MK

    需要评论审核就可以啦

  11. softjie softjie

    求 和谐词表

  12. Ellic Ellic

    傻逼,555555,ludou别怪我,我是想尝试下有没有效果哈。

  13. 兲語 兲語

    楼主,请问下为什么我用了你的代码后会500错误那?我同时也用了别的在网上找的替换文章内容的一个代码,请问是不是冲突那?如果冲突需要如何整合那?
    [php]
    <?php
    function replace_text_wps($text){
       $replace = array(
            // '替换前的内容' => '替换后的内容'
            '替换前内容' => '替换后内容', 
       );
        $text = str_replace(array_keys($replace), $replace, $text);
        return $text;
    }
    add_filter('the_content', 'replace_text_wps');
    add_filter('the_content', 'replace_text_wps');
    ?>
    [/php]

    • Ludou

      @兲語 add_filter(‘the_content’, ‘replace_text_wps’);
      add_filter(‘the_content’, ‘replace_text_wps’);

      删除以上任一行代码,你的代码是替换文章内容的。

      500是服务器级别的错误。

  14. 小赵

    你好。楼主,我想用wordpress弄一个自己的网上博客,但是不知道怎么弄,能不能告诉一下大致流程,和楼主的经验。

    • Ludou

      @小赵 先去买一个域名和主机,主机商会给你提供一个ftp,然后从http://cn.wordpress.org/下wordpress安装,解压,然后用ftp上传到主机空间,输入域名访问安装即可。
      其中涉及到的域名解析,数据库创建等,可以咨询主机客服,甚至wp安装都可以由他们代劳。

      • 小赵

        @Ludou 只是自己测试着玩,不想买,有免费的域名和主机能供申请吗?

  15. 馋猫汇 馋猫汇

    wp自带了一个插件提供垃圾过滤,但是我觉得并不是很好用。看了你的方法,我决定试一试。谢谢你的贡献。

  16. 神经大爆炸 神经大爆炸

    这是好东西啊!拿走!

  17. kaocff

    文字替换能用正则表达式?

  18. zhiyu zhiyu

    可以把“傻逼”“牛逼”全部替换成“牛逼”,哈哈哈

  19. 米虫 米虫

    可以考虑做成配置文件替换,全部手工配置在代码里面略显麻烦~博主这个思路值得借鉴~非常感谢~

  20. 小小

    请问自定义字段文字怎么替换。我在前端投稿用户提交的文字含有英文专业名词,如何自动替换后台文章列表显示的自定义字段的自定义列中的专业名词?

发表留言