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動作はユーザからのアクセスをトリガにして、バックグラウンドで動作させるんだって。

なるほどなー

Twitter で