カスタム投稿タイプが使えるようになって、良い気になっていくつか追加して、そこに記事を追加していましたが、ふと「アクセス全然ない」ということに気づきました。気になってGoogleさまでインデックスの確認したら、いつもの記事なら最悪でも翌日にはインデックスされていたのに1週間前の記事でもノーインデックス、頭の中真っ白になりました。ここは基本に戻ってGoogleさまに記事が追加されたことは伝わっているのか?などいろいろと対応しました。
いろいろ調べてもカスタム投稿タイプの作成記事ばかりで肝心なことは書いてないことが多いと痛感しました。同じ境遇になっている方はぜひ対策してください。
カスタム投稿タイプの問題
カスタム投稿タイプの機能は「新しく記事の集まりを作る」ということであって、その先は通常の記事のようにやってくれません。検索エンジンへのインデックスを速くするには最低でも「Ping」送信と「検索エンジン向けサイトマップへの記述」が必要になるのですが、そこまではやってくれないのです。要するに、サイトの中にはあるが独立したページとしてしか存在しない、いわゆる「ペラページ」という扱いになってしまうんですね。この状態だと、カスタム投稿タイプに書いた記事へのリンクをたどってしか検索エンジンが巡回してくれないので、インデックスされるには時間がかかるし、HTMLで作ったページと比べてPHPでリクエストに応じて記事内容を吐き出すWordPressは不利には違いがないので、対策をしていく必要があります。
サイトマップにカスタム投稿タイプを追加する
「Google Sitemap Generator」プラグインを使っているのであれば、設定変更は簡単です。「Google Sitemap Generator」の設定画面に行き、画面中ほどに追加されているカスタム投稿タイプをサイトマップに含めるのかという欄にチェックを入れて更新するだけで、検索エンジン向けのサイトマップにちゃんとカスタム投稿タイプの記事が追加されます。これでまずは長い目での検索エンジン対策は完了です。

RSSフィードにカスタム投稿タイプの記事を追加する
ユーザー向けに効果のあるRSSフィードは、もちろん定期閲覧ユーザー向けのものではありますが、これを利用している「まとめ」的な検索エンジンもあります。それらに対応させるためにRSSフィードへカスタム投稿タイプの記事を挿入します。
コードは
// functions.php
function myfeed_request($qv) {
if (isset($qv['feed']) && !isset($qv['post_type']))
$qv['post_type'] = array('投稿タイプ名1', '投稿タイプ名2');
return $qv;
}
add_filter('request', 'myfeed_request');
上記のコードで「投稿タイプ名1」「投稿タイプ名2」のところに投稿タイプの名前(半角英数字)を入れます。もちろん1つだけなら「投稿タイプ名2」のところは削除すればいいし、数が多ければ「, ‘投稿タイプ名2’」の部分を増やせばOKです。
コードが完成したらテーマのfunctions.phpへ記述を追加すれば完了です
テストとして、RSSフィードを開いてみてくださいね(http://サイトURL/?feed=rss2で表示されます)
表示されない場合は投稿タイプの入力の問題だと思われますので確認してください。
Ping送信を送信する
Pingは記事の投稿や更新を検索エンジンに一番速く伝える方法ですが、カスタム投稿タイプを追加しただけでは何も動作しません。上記のRSSフィード同様functions.phpに以下のコードの必要事項を編集して追加すれば対策完了です。
コードは
function カスタム投稿タイプ名_pings_at_publish( $post_id ) {
wp_schedule_single_event( strtotime( '+10 min' ), 'do_pings', array( $post_id ) );
}
add_action( 'publish_カスタム投稿タイプ名', 'カスタム投稿タイプ名_pings_at_publish', 10, 1 );
「カスタム投稿タイプ名」の部分を修正します。
テーマのfunctions.phpの変更をしたことがないという方や不安な方は、functions.phpにコードを追加できるプラグインを使うことをお勧めします。