web-dev-qa-db-ja.com

空のカスタム投稿タイプアーカイブページでは404 WP 3.1

"Portfolio"というカスタム投稿タイプを設定しました。投稿を追加せずにCPTのアーカイブページを表示すると(/ portfolioまたは/?post_type = portfolio)、404ページが返されます。アーカイブページを表示しながらメッセージをパーソナライズする方法はありますか?すなわち「現時点で、現時点でポートフォリオはありません」.

ポートフォリオのカスタム投稿タイプに1つの投稿を追加するとすぐに、アーカイブページは正常に読み込まれます。

これは私の問題にマッチする他の投稿です

http://wordpress.org/support/topic/empty-archives-returning-404

0件の投稿を含むカスタム投稿タイプアーカイブは404としてリダイレクトされます

1
Andrew

cPTで "has_archive"オプションを何に設定しましたか。また、必ずパーマリンクをリセットしてください。

カスタマイズされたメッセージを書き込むことに関しては、そのCPTに特有のアーカイブテンプレートを作成することができます。 CPTが「ポートフォリオ」の場合は、「archive-portfolio.php」という名前のテンプレートを作成し、必要に応じてカスタマイズできます。

1
Norcross

また、アーカイブページのフィルターが空の結果を取得しているときにもこの問題が発生しました。

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に追加すると、分類法に結果がない場合、アーカイブテンプレートに残ります。

0
khoekman