WordPress:「トラックバック送信先」に送れない問題が解決した
最近、WordPressの記事作成時、「トラックバック送信先」にURLを書いても送信されず、そのまま残る問題が発生していました。
「相手側の問題なのかなー?」と気になりながらも放置していましたが、アチコチ送ってるのに全く反映されず、これはどうやら自分側の問題だろうと判断し、解決方法を探してみました。
問題の原因
Googleさんにお伺いを立てたところ、「WordPress:トラックバックが出来ない! – マゼランな航海」で似たような問題を発見。
曰く、sockopenのタイムアウトが「0.01秒」と極端に短く、重めのサーバだとタイムアウトして送信できないことがあるそうです。
うちはXrea/Coreserverという共用サーバで、お世辞にも軽いとは言えません。原因はこれじゃね!?
解決方法
wp-includeディレクトリにあるcron.phpを編集して、タイムアウト時間を長くします。
WordPress 2.9のソースでは、cron.phpの292行目、function spawn_cron()関数内の以下の箇所を修正します。
wp_remote_post( $cron_url, array('timeout' => 0.01, 'blocking' => false, 'sslverify' => apply_filters('https_local_ssl_verify', true)) );
この行の「’timeout’ => 0.01」を書き換えます。私は「’timeout’ => 30」で30秒に設定しました。
おまけ:wp-cronの動作
フラフラしていたら「hiromasa.another ≫ Blog Archive ≫ XREA & CORESERVER の cron と WordPress の wp-cron」という記事も発見。
曰く、WordPressとしての疑似cron動作はユーザからのアクセスをトリガにして、バックグラウンドで動作させるんだって。
なるほどなー
ディスカッション