"Portfolio"というカスタム投稿タイプを設定しました。投稿を追加せずにCPTのアーカイブページを表示すると(/ portfolioまたは/?post_type = portfolio)、404ページが返されます。アーカイブページを表示しながらメッセージをパーソナライズする方法はありますか?すなわち「現時点で、現時点でポートフォリオはありません」.
ポートフォリオのカスタム投稿タイプに1つの投稿を追加するとすぐに、アーカイブページは正常に読み込まれます。
これは私の問題にマッチする他の投稿です
http://wordpress.org/support/topic/empty-archives-returning-404
cPTで "has_archive"オプションを何に設定しましたか。また、必ずパーマリンクをリセットしてください。
カスタマイズされたメッセージを書き込むことに関しては、そのCPTに特有のアーカイブテンプレートを作成することができます。 CPTが「ポートフォリオ」の場合は、「archive-portfolio.php」という名前のテンプレートを作成し、必要に応じてカスタマイズできます。
また、アーカイブページのフィルターが空の結果を取得しているときにもこの問題が発生しました。
function empty_archive_404_template( $template = '' ){
global $wp_query;
if ( isset( $wp_query->query['YOUR_TAXONOMY_NAME'] ) ) {
if ( isset( $wp_query->query['post_type'] ) ) {
$located = locate_template( 'archive-' . $wp_query->query['post_type'] . '.php', false );
$template = $located !== '' ? $located : locate_template( 'archive.php', false );
} else {
$template = locate_template( 'archive.php', false );
}
}
return $template;
}
add_filter( '404_template', 'empty_archive_404_template' );
この関数は、クエリが特定の分類法に対応しているかどうかを確認しますYOUR_TAXONOMY_NAME
この部分を分類法のスラッグに置き換えます。次に、現在の投稿タイプを確認して、特定のテンプレートファイルがあるかどうかを確認します。何もない場合は、デフォルトでarchive.phpに戻ります。この関数をfunctions.phpに追加すると、分類法に結果がない場合、アーカイブテンプレートに残ります。