TL; DR
プレビューモードを維持しながら、カスタム投稿タイプの単一ページとアーカイブを無効にする方法を知っている人はいますか。
投稿は、その投稿に割り当てられているカスタム分類のアーカイブにのみ表示されるため、カスタム投稿タイプの単一ページとアーカイブページを無効にする方法を探しています。これは通常、CPTの作成中に'publicly_queryable' => false
を設定することで簡単に実現できます。
さて、ここでひねりがあります:私はまだ投稿のプレビューモードを使用できるようにしたいので、保存する前に投稿の変更を確認できます。 'publicly_queryable' => false
を設定するとプレビューページも無効になるので、単一のページが重複したコンテンツとして表示されているか、ドラフトや投稿の変更が表示されていないかのどちらかです。
Cesarからの回答に基づいて(ありがとう)、私は以下の解決策を使用しています。これは、プレビューモードを維持する方法を示し、分類のアーカイブにリダイレクトすることも示しています。
add_action('template_redirect', 'post_redirect', 99);
function post_redirect()
{
global $post;
if ((is_post_type_archive('post_type') || is_singular('post_type')) && !is_preview())
{
$post_terms = wp_get_post_terms($post->ID, 'taxonomy');
if($post_term = $post_terms[0])
{
wp_redirect(get_term_link($post_term->term_id) . '#' . $post->post_name, 301);
die();
}
}
}
可能であれば、リダイレクトのない解決策にまだ興味があります。
誰かがあなたのカスタム投稿タイプのarchive
またはsingle
を見ようとしたときにリダイレクトすることができます、単にあなたの functions.php に入れるだけで別のページにリダイレクトすることができます
add_action( 'template_redirect', 'theme_redirects', 99 );
function theme_redirects() {
if ( is_post_type_archive( 'post_type_slug' ) || is_singular( 'post_type_slug' ) ) {
wp_redirect( 'my_url' );
die();
}
}
参考文献を参照してください。