プラスα空間

ブログ in お市 のーと

WordPressの記事をGooブログ検索様にインデックスして頂く

Gooブログ検索様は、独特の価値観を持っておられ、標準のWordPressからのpingを受け付けて下さいません。

色々調べ、次の方法をとり、Gooブログ検索様にインデックスして戴ける様になりました。

Goo Blog検索にインデックスされた

短い間でしたが。一度、インデックスして戴ける様になり、その後、無視され続けています。

  1. プラグインWordPress Ping Optimizerの導入
  2. index.rdfの準備(.httpacess修正)
  3. index.rdfの準備(htmlヘッダへの追加)
  4. プラグインFeed Template Customizeの導入
  5. index.rdfの準備(feed-rdf.phpの修正)

なお、この方法にたどり着くまでに、次の記事を参考にさせていただきました。ありがとうございます。

手順

1. プラグインWordPress Ping Optimizerの導入

標準のWordPressは、新規に記事を公開した時だけではなく、記事を更新するたびにpingを送ってしまいます。次のプラグインを導入する事で、不要なPingを発生しなくなります。

マルチサイトのブログを運営されていらっしゃいます方は、プラグインインストール後は「ネットワークで有効」ではなく、個別のブログ毎に有効にされた方が安全と思われます。

ですが、やはりこのままではGooブログ検索様は受け付けて下さいません。

Goo Ping失敗

User AgentがWordPressだと、無視する様でございます。その為、WordPress Ping OptimizerのUser Agent名を書き換えさせていただきました。

次のページが参考になります。ありがとうございます。

WordPress Ping Optimizerを直接編集して、”WordPress”となっているUser Agentを書き換えます。WordPressを連想させない英数字の組み合わせだったら、何でも良いと思われます。この変更で、Gooブログ検索様にPingを受け入れていただく事ができました。

Goo Ping成功

変更前

		$client->useragent .= ' -- WordPress/'.$this->cbnetpo_wp_version;
http://blog.goo.ne.jp/XMLRPC could not be pinged. Error message: "transport error - HTTP status code was not 200"

変更後

		$client->useragent .= ' -- MyAgent/'.$this->cbnetpo_wp_version;
http://blog.goo.ne.jp/XMLRPC was successfully pinged

ただし、プラグインのコードを直接書き換えさせていただいておりますので、プラグインが更新された際には、元の値に戻ってしまいます。再度、書き換えが必要でございます。

2. index.rdfの準備(.httpacess修正)

Gooブログ検索様がPingを受け取りあそばされますと、送らせていただいた内容にあわせて、index.rdfを見に来ていただけるようでございます。当ブログの場合、”http://oichinote.com/plus/index.rdf”を見に戴けた様です。Pingを送らせていただく前に、”http://oichinote.com/index.rdf”しか準備出来ていなかったので、うろたえてしまいました。

RewriteRule ^([_0-9a-zA-Z-]+/)?index\.rdf$ $1/feed/rdf [R=301,L]

GooBotがindex.rdfを見に来た

当初、RewiteRuleが上手く行かず、悩んでいました。”R=301″を付ける事で、上手く転送される様になりました。意味的にも正しいと思われます。

3. index.rdfの準備(htmlヘッダへの追加)

Gooブログ検索様は、HTMLソース中のRSSフィードをご覧になられる様ですので、index.rdfへのリンクをご用意させていただきました。テーマ中のfunctions.phpにご記入いただければよろしいかと存じます。

function add_rdf_feed() {
         echo '    <link rel="alternate" type="application/rss+xml" title="RDF &raquo; フィード" href="'.get_bloginfo('siteurl').'/index.rdf" />'."\n";
}
add_filter('wp_head', 'add_rdf_feed', 5);

4. プラグインFeed Template Customizeの導入

Gooブログ検索様は、RSSフィードのTime Zoneは必ず日本時間(UTC+9)である事を望まれていらっしゃる様です。こちらがうっかりUTCで送ってしまおう物なら、かたくなに日本時間とご理解される様です。

WordPressの中は、すべてUTCを想定して作られている様です。wp-setting.phpやテーマのfunctions.phpでdate_default_timezone_set( ‘UTC+9’ );としてタイムゾーンを変えてしまうのは、よろしくない事なのだそうです。

今回、Gooブログ検索様専用の対応でございますので、RDFを作る部分だけに手を入れてしまえば良いのです。検索の末にたどり着いたのが、次のフォーラムでございます。

このフォーラムの中でご紹介されております、次のプラグインを利用させていただきました。

作者ご自身が、日本語でご解説して下さっています。ありがとうございます。

プラグインインストール後、「ネットワークで有効」にすれば大丈夫です。

5. index.rdfの準備(feed-rdf.phpの修正)

Feed Template Customizeで、Feedの出力形式を変更するためには、該当するFeed作成用のスクリプトを、テーマ内に置く必要がございます。今回の場合、feed-rdf.phpでしたので、標準のwp-includes/feed-rdf.phpをコピーして参りました。

UTCにしている部分をJST(+0900)で送らせていただきます。また、日本語で書かれている事を宣言させていただきました。変更内容は、次の通りでございます。

 # diff -c ../../../wp-includes/feed-rdf.php feed-rdf.php 
*** ../../../wp-includes/feed-rdf.php	Sat Dec 20 17:31:50 2014
--- feed-rdf.php	Sat Jan 10 15:44:19 2015
***************
*** 20,25 ****
--- 20,26 ----
  	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  	xmlns:admin="http://webns.net/mvcb/"
  	xmlns:content="http://purl.org/rss/1.0/modules/content/"
+ 	xml:lang="ja"
  	<?php
  	/**
  	 * Fires at the end of the feed root to add namespaces.
***************
*** 33,39 ****
  	<title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
  	<link><?php bloginfo_rss('url') ?></link>
  	<description><?php bloginfo_rss('description') ?></description>
! 	<dc:date><?php echo mysql2date('Y-m-d\TH:i:s\Z', get_lastpostmodified('GMT'), false); ?></dc:date>
  	<sy:updatePeriod><?php
  		/** This filter is documented in wp-includes/feed-rss2.php */
  		echo apply_filters( 'rss_update_period', 'hourly' );
--- 34,41 ----
  	<title><?php bloginfo_rss('name'); wp_title_rss(); ?></title>
  	<link><?php bloginfo_rss('url') ?></link>
  	<description><?php bloginfo_rss('description') ?></description>
! 	<dc:date><?php echo mysql2date('Y-m-d\TH:i:s+09:00', get_lastpostmodified(), false); ?></dc:date>
! 	<dc:language>ja-jp</dc:language>
  	<sy:updatePeriod><?php
  		/** This filter is documented in wp-includes/feed-rss2.php */
  		echo apply_filters( 'rss_update_period', 'hourly' );
***************
*** 42,48 ****
  		/** This filter is documented in wp-includes/feed-rss2.php */
  		echo apply_filters( 'rss_update_frequency', '1' );
  	?></sy:updateFrequency>
! 	<sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>
  	<?php
  	/**
  	 * Fires at the end of the RDF feed header.
--- 44,50 ----
  		/** This filter is documented in wp-includes/feed-rss2.php */
  		echo apply_filters( 'rss_update_frequency', '1' );
  	?></sy:updateFrequency>
! 	<sy:updateBase>2000-01-01T12:00+09:00</sy:updateBase>
  	<?php
  	/**
  	 * Fires at the end of the RDF feed header.
***************
*** 63,69 ****
  <item rdf:about="<?php the_permalink_rss() ?>">
  	<title><?php the_title_rss() ?></title>
  	<link><?php the_permalink_rss() ?></link>
! 	<dc:date><?php echo mysql2date('Y-m-d\TH:i:s\Z', $post->post_date_gmt, false); ?></dc:date>
  	<dc:creator><![CDATA[<?php the_author() ?>]]></dc:creator>
  	<?php the_category_rss('rdf') ?>
  <?php if (get_option('rss_use_excerpt')) : ?>
--- 65,71 ----
  <item rdf:about="<?php the_permalink_rss() ?>">
  	<title><?php the_title_rss() ?></title>
  	<link><?php the_permalink_rss() ?></link>
! 	<dc:date><?php echo mysql2date('Y-m-d\TH:i:s+09:00', $post->post_date, false); ?></dc:date>
  	<dc:creator><![CDATA[<?php the_author() ?>]]></dc:creator>
  	<?php the_category_rss('rdf') ?>
  <?php if (get_option('rss_use_excerpt')) : ?>

結果として、この方法だけでは、Gooブログ検索様の期待通りにはできていなかった様です。Feedではなく、記事本体中の投稿時刻をJSTにしなければならなかった様です。ですが、WordPressの時間帯をUTC以外にすることは、WordPressのポリシーと相異入れる事は叶いません。投稿時刻がずれるのは、諦めるしかないのでした。

まとめ

そもそも、Gooブログ検索様がWordPressをお嫌いなのは、次の理由による物と思われます。

標準のWordPressのpingの挙動が、Gooブログ検索様のお気に触ったようでございます。

また、RSSのバージョン、タイムゾーン、文字コードにもこだわりを持っておられるようで、お気に召さないと、受け付けていただけないようでございます。

この様な制約を乗り越え、投稿時刻はずれている物の、Gooブログ検索様にインデックスして戴ける様になりました。しかしその後、Gooブログ検索様のお気に召さない事をしてしまったのか、インデックスしていただけなくなってしまいました。Pingは受け取っていただけている様なのにです。どうされたのでしょうか? 投稿時刻がずれていたのが、やはりお気に障りましたか?

…ったく、こんなわがままな仕様、止めてしまえ! って感じです。記事時刻をJSTしか受け付けないとか、WordPressは排除するとか。今、継続してブログを書かれている方のほとんどは、WordPressではないでしょうか? それを無視するとは、ブログ文化を認めていないのと同じだと思います。絶対数だと、Amebloの方が多いのでしょうかね。Amebloからの記事はインデックスされているようですので、数としては十分なのでしょうか?

私が記事をGoogleで検索すると、有益な情報はほとんどWordPressで記事を書かれている方の物がヒットします。Gooブログ検索なんて、意味がないって事ですね。二度とGooブログ検索に対応しようなんて、思わない。

WordPressの記事をGooブログ検索様にインデックスして頂く”に“1”個のコメント

WordPressのPing送信で [transport error – HTTP status code was not 200] エラーが発生する件を調査 │ WordPress初心者向け情報 へ返信する コメントをキャンセル