[WordPress]feedの投稿リストを公開時間で選別する方法(SEO対策)
- 6 11月, 2013
Googleのクローラが自サイトの新規ページを世界で一番早くインデックス化するよう、feedに最新記事を出力させず、数時間遅れてから出るように、条件を制御しているところがあるそうです。
今回はWordPressでコアファイルを変更せずに時間の条件を付ける方法をアップします。
自分で書いたのにコピー扱いされる?
確かに外部サイトがfeedを取得・表示して先にGoogleにインデックスされでもしたら、そのサイトがオリジナルサイトだと判断されてしまうかもしれません。検索からの流入が主なサイトでは死活問題かもしれませんね。
WordPressでは通常コアファイルによってfeedが出力されるため、プラグインを使うかアクションフィルターなどを用いてカスタマイズします。
以下で紹介するのはアクションフィルターで$queryの条件を変更する処理となっています。
※お使いのテーマにあるfunctions.phpに記述してください。
function filter_where( $where = '' ) { if (is_feed()) { $where .= " AND post_date < '".date("Y-m-d H:i:s",strtotime("-1 hour"))."'"; } return $where; } add_filter( 'posts_where', 'filter_where' );
<解説>
- (2行目)「is_feed」でfeedアクセスの場合に限定
- (3行目)「wp_posts.post_date(記事の公開日時)」の条件に「<」と”-1 hour“を設定(1時間前より、さらに前の公開日時)
- (8行目)add_filterを使い、「posts_where」にフック
これでクエリーが処理される際に、公開日時の時間を判断してくれます。
もし1時間では心もとない(クローラーが来てくれていない)場合は3時間(-3 hour)にしてもよいですね。
記事を公開した後、Googleウェブマスターツールの「Fetch as google」でインデックス化を依頼しておくこともお忘れなく。
(補足)
私が使っているサーバではどうしても日本時間になってくれなかったので、時間の指定を変更しながら正確な時間指定を探しました。実施する際は必ず境界値テストで意図したfeed配信内容になっているか確認してください。
私のサイトは主に勉強なので、アクセスは気にしてませんが、ある程度訪問が増えると色んなことに気を使わないといけないのですね。