久々にWordPressの話題です。
唐突ですが、自分は普段他人のサイトにトラックバックを送る事は殆どありません。

自分が運営する他のサイトで、他人のサイトにトラックバックを送った事は何回かありましたが、
記事を書くたびにそういった事をするのが面倒臭くいつの間にかしなくなった為、
このサイトでトラックバックを送った事は一度もありませんでした。

TB機能

ちなみに、WordPressにはデフォルトでピンバックという機能が搭載されており、
WordPressで作成されたサイトにリンクを張れば、トラックバックを設定しなくても自動でPingを送信します。

というわけで、WordPressサイト限定でPingを自動送信した事は何度かあったでしょうが、
あえてトラックバックという機能を使用した事はありませんでした。

で、先日、必要があって初めてトラックバック機能を使用したのですが、何だか動作がおかしい・・


TBフォーム欄に入力したトラックバックURLが、
記事を更新してもフォーム内に残ったまま
になっているのです。

相手先のサイトにトラックバックの内容が表示されていれば、送信・未送信を確認できますが、
トラックバック先のサイトでは、トラックバックは承認制にしている為、
承認されるまではトラックバックを送る事が出来たのか、出来なかったのかわかりません。

ですので試しに、自分の持っている別のブログにトラックバックを打ってみたのですが
やはり自分が思ったとおり、トラックバックを送信する事が出来ていませんでした。

というわけで色々調べてみた所・・・


どうも、WordPressのphpファイル内のコードの一部に問題があると言う事が分かりました。

なぜデフォルトでこのような書き方になっているのかと思いますが、
とにかく修正の必要があるという事です。

そんな理由で以下、今回行った修正内容です。




まず、WordPressのwp-includesディレクトリに置かれている・・

wp-includes内のphpファイル

上記のwp-includes/cron.phpwp-includes/comment.phpを修正します。


【cron.phpの修正】

cron.php内の230~240行目辺りにあるコード、
wp_remote_postの行にかかれたタイムアウトの値を、0.01から4に変更します。


【修正前】

cron.phpの修正

	$cron_url = get_option( 'siteurl' ) . '/wp-cron.php?doing_wp_cron';
	wp_remote_post( $cron_url, array('timeout' => 0.01, 'blocking' => false....略
}


【修正後】

cron.phpの修正後

	$cron_url = get_option( 'siteurl' ) . '/wp-cron.php?doing_wp_cron';
	wp_remote_post( $cron_url, array('timeout' => 4, 'blocking' => false....略
}



【comment.phpの修正】

同じくcomment.php内の1790~1800行目辺りにある、
trackbackのタイムアウトの値を、4から30に変更します。


【修正前】

comment.phpの修正前

	$options = array();
	$options['timeout'] = 4;
	$options['body'] = array(
		'title' => $title,
		'url' => get_permalink($ID),
		'blog_name' => get_option('blogname'),
		'excerpt' => $excerpt


【修正後】

comment.phpの修正後

	$options = array();
	$options['timeout'] = 30;
	$options['body'] = array(
		'title' => $title,
		'url' => get_permalink($ID),
		'blog_name' => get_option('blogname'),
		'excerpt' => $excerpt


ちなみに、上記に設定したタイムアウトの値、
4」や「30」は絶対にこの値でなくてはならないというわけではなく、
サイトによって最適な値は異なります。

タイムアウトの時間を長くしすぎると、
一度の更新でトラックバックを2回以上送信してしまう事があったため、
何度か自サイトでテストを行って上記の値にしましたが、
ごく稀に動作がおかしい(更新でトラックバックが送信されない)事があるようです。

一応、TB自体はきちんと送信できるようになったのでこの値にしていますが、
不具合が出たらまた変更するかもしれません。
(WPのアップグレードなどでphpファイルの内容が変わる可能性もあるので)


WordPressはなぜか他の一般的なブログとは仕様が異なる部分がいくつかあり、
そのたびに修正を入れたりプラグインを追加するなど、ちょっと面倒臭いです。