【WordPress】「無効な投稿タイプ。」というエラーの解決方法
WordPress 管理画面の投稿一覧画面で検索したら,「無効な投稿タイプ。」と出る.
「無効な投稿タイプ。」と句点付きで言われてもなあ,と正直思う.
致命的ではないが,過去の記事を検索するのが非常に面倒だ.
今回たまたま,エラーの解除方法が分かったのと,困っている人もいるだろうと思うことから記事にしておく.
カスタム投稿タイプを作成していることが原因
ネットで検索すると,どうもカスタム投稿タイプが原因っぽい.
しかし,カスタム投稿タイプを削除するわけにもいかない.
SimpleTags (現Taxopress) が原因だと書かれている情報も見つけたが,これを無効にしてもエラーが出る.
何かが違うようだ.
エラーの出る状況の再現方法
まず一覧ページで検索
投稿一覧か,カスタム投稿一覧ページで「検索」してみる.
これがうまく行く場合は,カテゴリーを選択して「絞り込み」をしてみる.
この後,もう一度何か単語を入れて「検索」するとエラーの再現が出来た.
もし,これと同じ症状が出ている場合,解決する方法が分かった.
別の一覧ページで検索
先ほど検索した投稿タイプではない投稿一覧で「検索」してみる.
すると検索ができる.
その後,先ほどエラーが出た投稿一覧に戻って「検索」するとエラーは出なくなる.
つまり,「カテゴリー」で検索すると何かトリガーのようなものが働き,「検索」が出来なくなるようだ.
その場合のトリガーの解除は別の投稿タイプでの「検索」のようだ.
解決方法
「無効な投稿タイプ」で検索しても見つけられなかったが,「無効な投稿形式」の解決方法を書かれているページが参考になった.
というか,一部分をほぼそのまま使わせてもらっている.
参考になったページは
WordPressで「無効な投稿形式」と出て、edit.phpにエラーが出ている場合の解消方法
です.感謝致します.
以下でカスタム投稿タイプの slug を xxxxxx とする.
要は検索した時に通常記事だけでなくカスタム投稿タイプのページも表示できるようにする設定を管理画面では設定しないようにするということだ.
確かにカスタム投稿タイプのページで検索する時に通常の記事は出てくるはずがないので,この設定は不要ということが分かる.
むしろ,通常の記事の検索をしようとする時にカスタム投稿タイプを入れられても困るということだろう.
functions.php の該当箇所を以下のように書き替える.要は管理画面で効かないようにする.
if (!is_admin()) { // 管理画面では設定不要
function add_post_category_archive( $wp_query ) {
if ($wp_query->is_main_query() && $wp_query->is_category()) {
$wp_query->set( 'post_type', array('post','xxxxxx'));
}
}
add_action('pre_get_posts', 'add_post_category_archive' , 10 , 1);
}
ご質問等ありましたら,お手数ですが弊社の個人情報保護方針をお読み頂いた上でフォームからお願い致します.
※このページと無関係な内容のセールスはご遠慮ください.