web-dev-qa-db-ja.com

単一ページとアーカイブを無効にしてプレビューを維持する

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();
        }
    }
}

可能であれば、リダイレクトのない解決策にまだ興味があります。

1
taymless

誰かがあなたのカスタム投稿タイプの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();
  }
}

参考文献を参照してください。

is_post_type_archive

is_singular

template_redirect