【WordPress】PS Auto Sitemapでカスタム投稿タイプが表示されない場合の対処方法

【WordPress】PS Auto Sitemapでカスタム投稿タイプが表示されない場合の対処方法
2018年01月27日2023年10月15日

WordPressのプラグインでサイトマップを生成してくれるPS Auto Sitemapというプラグインがあるのですが、初期状態だとカスタム投稿タイプで書いている記事が表示されません。

そこでPS Auto Sitemapプラグインでカスタム投稿タイプの記事を表示する方法を紹介します。

カスタム投稿タイプの記事が表示されない原因

そもそもなんでカスタム投稿タイプの記事が表示されないかPS Auto Sitemapプラグインのソースコードを追ってみました。

追ってみると、記事を取得するときに投稿記事のみを強制的に指定しているためカスタム投稿タイプの記事が表示されないようです。

なので、PS Auto Sitemapの設定画面にもカスタム投稿タイプを設定する項目もありません。そもそもカスタム投稿タイプを想定して作られていないようです。

カスタム投稿タイプの記事を表示するには

PS Auto Sitemapプラグインを使ってカスタム投稿タイプの記事を表示するには「ソースコードを修正する」しかありません。

今後のバージョンアップでカスタム投稿タイプの設定項目を増やしてほしいですが、いつ実装されるかもわかりませんので、実装されるまで手動でプラグラムを修正するしかありません。

プラグラムの修正は、手順通りにしてもらえれば簡単に出来ますのでぜひ試してみてください。

なおソースコードの修正は、「PS Auto Sitemap」がインストールされている前提で解説していますので、まだインストールしていない方は、下記記事を参考にWordPressにインストールしてください。

WordPressで構築したサイトやブログにサイト自体の目次(サイトマップ)を作成することは、...

ソースコードを修正

それでは早速修正していきたいと思います。

1「PS Auto Sitemap」フォルダを開く

FTPツールなどで、PS Auto Sitemapプラグインが動作している「ps-auto-sitemap」フォルダまで移動してください。

/wp-content/plugins/ps-auto-sitemap/

2「ps_auto_sitemap.php」ファイルを開く

同フォルダにある「ps_auto_sitemap.php」ファイルを開いてください。

FTPツールによっては、ダウンロードしないと編集できない場合があります。その場合はダウンロードしてからファイルを開いてください。

3プログラムを修正する

カスタム投稿タイプの使い方によって修正箇所が異なります。

==========================================
カスタム投稿タイプがカテゴリに紐づいていない場合
==========================================

こちらの設定は、固定ページのようにカスタム投稿タイプがカテゴリに紐づいていない場合の設定になります。

バージョンによって行数が異なるかもしれませんが112行あたりに下記コードが記述されているかと思います。

		}
		
		$sitemap_content .= "\n";
		
		if ( ( $cache_dir = $this->check_cache_dir() ) && $this->option['use_cache'] ) {

黄色く塗られている前の行(111行)に下記コードを追加します。

●●●部分はカスタム投稿タイプのスラッグに変更してください。

$sitemap_content .= wp_list_pages( 'post_type=●●●&title_li=&echo=0&exclude=' . $ex_pages . '&depth=' . $this->option['disp_level'] );

複数ある場合は、下記のように行ごと追加してください。

$sitemap_content .= wp_list_pages( 'post_type=●●●&title_li=&echo=0&exclude=' . $ex_pages . '&depth=' . $this->option['disp_level'] );
$sitemap_content .= wp_list_pages( 'post_type=▲▲▲&title_li=&echo=0&exclude=' . $ex_pages . '&depth=' . $this->option['disp_level'] );

■追加後のサンプル

		}
		
		$sitemap_content .= wp_list_pages( 'post_type=●●●&title_li=&echo=0&exclude=' . $ex_pages . '&depth=' . $this->option['disp_level'] );
		$sitemap_content .= "\n";
		
		if ( ( $cache_dir = $this->check_cache_dir() ) && $this->option['use_cache'] ) {

==========================================
カスタム投稿タイプがカテゴリに紐づいている場合
==========================================

こちらの設定は、投稿記事のようにカスタム投稿タイプがカテゴリに紐づいている場合の設定になります。

バージョンによって行数が異なるかもしれませんが217行あたりに下記コードが記述されているかと思います。

黄色く塗っている部分です。

INNER JOIN $wpdb->terms as `terms`
ON		( `taxonomy`.`term_id` = `terms`.`term_id` )
WHERE	`posts`.`post_status` = 'publish'
AND		`posts`.`post_type` = 'post'
AND		`posts`.`ID` NOT IN ( $ex_post_ids )
AND		`terms`.`term_id` = '$cat_id'

上記で黄色く塗っている部分を下記のように修正してください。

●●●部分はカスタム投稿タイプのスラッグに変更してください。

AND		`posts`.`post_type` in ('post','●●●')

カスタム投稿タイプが複数ある場合は、カンマ(,)区切りで追加してください。

AND		`posts`.`post_type` in ('post','●●●','▲▲▲')

技術的な話になってしまいますが、人によって「OR」句を使ってデータ取得している方がいますが、「IN」句を使ったほうがデータ取得が早いので上記は「IN」句を使用しています。

4修正が完了したら保存する

修正が完了したら保存してください。ローカル環境で修正した方は、再度同じフォルダにアップロードして既存ファイルを上書きしてください。

動作確認

サイトマップページを表示してカスタム投稿タイプの記事が表示されているか確認してください。

修正しても表示されない場合

プログラムを修正しても表示されないことがあります。その場合は下記をおこなってみてください。

キャッシュを削除する

サイトページを高速表示するためにキャッシュプラグインを入れている場合は、キャッシュをリセットしてください。

また、PS Auto Sitemapの設定画面にもPS Auto Sitemap自体のキャッシュ設定があるので、そちらもOFFにして試してみてください。確認できたらキャッシュ有効にしてください。

まとめ

いかがだったでしょうか。PS Auto Sitemapのアップデートで今後対応してくれたらだいぶ助かるのですが上記の修正でカスタム投稿タイプの記事を表示させることができます。

直接PS Auto Sitemapのファイルを修正しているため、PS Auto Sitemapのアップデートがある場合は最新ファイルで上書される可能性がありますので注意してください。

コメント

コメントを残す

お名前(任意)
コメント:新規