用代碼實現wordpress評論留言,wordpress數字驗證,過濾垃圾評論

我這邊提供兩種方法。
也是比較簡單的方法。
雖然有些人是透過修改外掛的方式,達到不靠外掛,也有亮麗的驗證方式。
但常常無法適用於普遍主題。
而現在wordpress主題太多了,用通用的代碼,比較可以簡單實現功能。
這邊我提供兩種方式。
第一種方式「自動生成4位數字」
開啟主題的function.php加入以下代碼
  1. // ADD: Anti-spam Code
  2. //自動生成4位數字
  3. function olo_antispam(){
  4. if(!is_user_logged_in()){
  5. //$pcodes = substr(md5(mt_rand(0,99999)),0,4); //驗證碼為英文+數位組合
  6. $pcodes = substr(mt_rand(0,99999),0,4); //驗證碼為數位組合
  7. $str = 'class="olo_anti">';
  8. $str .= 'for="subpcodes">'.__('自動生成4位數字', 'olo').':';
  9. $str .= '"text" size="4" id="subpcodes" name="subpcodes" />';
  10. $str .= 'class="pcodes">'.$pcodes.'';
  11. $str .= '"hidden" value="'.$pcodes.'" name="pcodes" />';
  12. $str .= '

    ';
  13. echo $str;
  14. }
  15. }
  16. add_action('comment_form', 'olo_antispam', 11);
  17. function yanzhengma(){
  18. if ( !is_user_logged_in() ) {
  19. $pcodes = trim($_POST['pcodes']);
  20. $subpcodes = trim($_POST['subpcodes']);
  21. if((($pcodes)!=$subpcodes) || empty($subpcodes)){
  22. wp_die( __('錯誤!請輸入正確的驗證碼') );
  23. }
  24. }
  25. }
  26. add_filter('pre_comment_on_post', 'yanzhengma');
 
第二種方法「數字加法驗證法」
開啟主題的function.php加入以下代碼
 
  1. //數字加法驗證法
  2. add_action('comment_form', 'spam_protection_math', 11);
  3. function spam_protection_math(){
  4. //隨便取得兩個亂數, 範圍0~9
  5. $num1=rand(0,9);
  6. $num2=rand(0,9);
  7. //從網頁中的具體內容
  8. echo " $num1 + $num2 = ?"
  9. .""
  10. .""
  11. ." 驗證碼

    "
    ;
  12. }
  13. function spam_protection_pre($commentdata){
  14. $sum=$_POST['sum'];//訪客提交的計算結果
  15. switch($sum){
  16. //得到正確的計算結果則直接跳出
  17. case $_POST['num1']+$_POST['num2']:break;
  18. //未填寫結果時的錯誤訊息
  19. case null:wp_die('錯誤: 沒有輸入驗證碼,請再驗證碼.');break;
  20. //計算錯誤時的錯誤訊息
  21. default:wp_die('錯誤: 驗證碼錯誤,請輸入正確的驗證碼.');
  22. }
  23. return $commentdata;
  24. }
  25. if($comment_data['comment_type']==''){
  26. add_filter('pre_comment_on_post','spam_protection_pre');
  27. }

評論 (0)

此處尚未發表評論

留言

  1. 以遊客身份發表評論。 註冊登入到您的帳戶。
附件 (0 / 3)
分享您的位置