在自我託管的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
不起作用或者我做錯了什麼,我不需要重新編寫整個函數來執行似乎已經存在的內容?