XOOPS版WordPressでPing一括送信サービスの「Pingoo!」にPingされないので、いろいろ試してみてやっとやり方がわかりました。
と思ったら、やっぱりうまくいかんわ。わからん。
XOOPSモジュール版WordPress作者の方の掲示板でこのような情報を見つけたのですが、これでは出来ませんでした。
index.phpまでつけると、「https://a-tak.com/xoops/modules/wordpress/index.php/」という変なアドレスで登録されてしまうのがあやしいです。
Pingoo側の仕様が変わったのかもしれません。
まず、Pingでどのような情報が送られているかはここで紹介されているスクリプトで確認しました。
スクリプトをtempディレクトリにping-test.phpという名前で置くとすると、「xoops/modules/wordpress/themes/xxx/wp-config-custom.php」の中に
$GLOBALS[‘my_pingserver’][1][‘server’]=”a-tak.com”;
$GLOBALS[‘my_pingserver’][1][‘path’]=”/temp/ping-test.php”;
$GLOBALS[‘my_pingserver’][1][‘port’]=80;
こんな感じで追記します。
ちなみに、スクリプトはapacheのプロセスがファイル書き込みできる所におかないといけません。
これで新規に記事を投稿すると、スクリプトのディレクトリにテキストファイルができあがるのでその中身を見るとどんな情報が送られているかが分かります。
うちは、こんな感じで送られてました。
<?xml version=”1.0″?>
<methodCall>
<methodName>weblogUpdates.ping</methodName>
<params>
<param>
<value><string>[AT]A-tak on PC Weblog</string></value>
</param>
<param>
<value><string>https://a-tak.com/xoops/modules/wordpress/index.php</string></value>
</param>
</params>
</methodCall>
たぶん、Pingooはここに書かれているアドレスとユーザー登録時のアドレスが一致していないとpingを受け付けないのだと予想しました。
秀丸でWordPressのフォルダを「my_pingserver」でgrep検索すると、wp-includesのfunctions.php 792行目にこのあたりの処理が書かれていることが分かりました。ここを書き換えます。
// $message = new xmlrpcmsg(“weblogUpdates.ping”, array(new xmlrpcval(get_settings(‘blogname’)), new xmlrpcval(wp_siteurl().”/index.php”)));
$message = new xmlrpcmsg(“weblogUpdates.ping”, array(new xmlrpcval(get_settings(‘blogname’)), new xmlrpcval(wp_siteurl().”/”)));
こんな感じで、index.phpは外して、最後はスラッシュで終わるように書き換えました。
あとは、pingooのユーザー登録時に「https://a-tak.com/xoops/modules/wordpress/」こんな感じで登録しておけばOKです。
これで、ちゃんとPingooの送信履歴にPingの履歴が出るようになりました。無事Ping出来ています。いやー、よかったよかった。
あ、ちなみにPingooへのPing設定は
$GLOBALS[‘my_pingserver’][0][‘server’]=”pingoo.jp”;
$GLOBALS[‘my_pingserver’][0][‘path’]=”/ping/”;
$GLOBALS[‘my_pingserver’][0][‘port’]=80;
です。
と、ここまで書いてこの記事を投稿したけど、今度はPingされてない。うーんなんなんでしょうね・・・。
前にテストで送った記事からあまり時間が経ってないから受け付けてくれないのかな・・・。