2017-08-24 20 views
1

自己ホスト型、バージョン4.8.1の新規インストール、2017デフォルトテーマのサイトAPIキーを使ってAkismetプラグインを起動しました。 single.phpを更新:なぜAkismetが鍵確認で失敗したのですか?

if (function_exists('akismet_verify_key')) : 
    $testing = akismet_verify_key(akismet_get_key(), site_url()); 
    echo $testing; 
endif; 

が、それは常にfailedが戻ってきます。サイトドメイン名がAkismetダッシュボードに含まれていることを確認しましたが、何らかの理由で[キー確認文書] [1]を読んだ後に機能が検出されても、trueは返されません。私はPHPの例をコピーしてakismet_checkに機能の命名規則を変更した場合

function akismet_check($key, $blog) { 
    $blog   = urlencode($blog); 
    $request  = 'key='. $key .'&blog='. $blog; 
    $host   = $http_host = 'rest.akismet.com'; 
    $path   = '/1.1/verify-key'; 
    $port   = 443; 
    $akismet_ua  = "WordPress/4.4.1 | Akismet/3.1.7"; 
    $content_length = strlen($request); 
    $http_request = "POST $path HTTP/1.0\r\n"; 
    $http_request .= "Host: $host\r\n"; 
    $http_request .= "Content-Type: application/x-www-form-urlencoded\r\n"; 
    $http_request .= "Content-Length: {$content_length}\r\n"; 
    $http_request .= "User-Agent: {$akismet_ua}\r\n"; 
    $http_request .= "\r\n"; 
    $http_request .= $request; 
    $response  = ''; 
    if (false != ($fs = @fsockopen('ssl://' . $http_host, $port, $errno, $errstr, 10))) : 
     fwrite($fs, $http_request); 
     while (!feof($fs)) 
      $response .= fgets($fs, 1160); // One TCP-IP packet 
      fclose($fs); 
      $response = explode("\r\n\r\n", $response, 2); 
    endif; 
    if ('valid' == $response[1]) : 
     return true; 
    else : 
     return false; 
    endif; 
} 

と、それを渡す:

echo 'Akismet shows ' . $result = akismet_check(akismet_get_key(), site_url()); 

機能がすでに存在している場合、私は理解していないと私はそれがなぜ私が失敗しているのかを検出することができます。 Akismetは鍵検証の代替手段を持っていますので、akismet_verify_keyが機能しない場合や、何か間違っている場合、すでに存在すると思われることを行うために関数全体を書き直す必要はありませんか?

答えて

0

akismet_verify_key()の2番目のパラメータは、サイトURLではなく、接続するAkismet APIサーバのIPです。 Akismet_Admin::check_server_ip_connectivity()で使用され、サイトにいつでもAPIに接続できない場合のトラブルシューティングを支援します。

コールを変更すると、ちょうど$testing = akismet_verify_key(akismet_get_key());に変更する必要があります。

サイドノート:なぜテーマ内のAkismet APIキーを確認していますか?それとも、問題を示す単純な例ですか?

関連する問題