禁用单页和存档并保留预览

时间:2017-07-19 作者:taymless

TL;DR

有人知道我如何在保持预览模式的同时禁用自定义帖子类型的单页和存档吗?

我正在寻找一种方法来禁用自定义帖子类型的single和archive页面,因为这些帖子只会显示在分配给帖子的自定义分类的归档中。这通常可以通过设置\'publicly_queryable\' => false 创建CPT时。

现在,这里有一个转折点:我仍然希望能够对帖子使用预览模式,以便在保存之前检查帖子上的更改。自设置以来\'publicly_queryable\' => false 也会禁用预览页面,我被困在将单个页面作为重复内容或无法查看草稿或帖子更改之间。

根据塞萨尔的回答(谢谢!)我正在使用以下解决方案,它还显示了如何保持预览模式并重定向到分类法的存档,如上所述。

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

I\'m still interested in a solution without redirects, in case thats possible.

1 个回复
最合适的回答,由SO网友:Cesar Henrique Damascena 整理而成

当有人试图查看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

结束

相关推荐

Permalinks - Archives

WordPress文档说:WordPress offers you the ability to create a custom URL structure for your permalinks and archives. https://codex.wordpress.org/Settings_Permalinks_Screen 我看到此屏幕将如何为特定帖子/页面创建永久链接,但我没有看到此设置屏幕上关于如何为存档帖子/页面创建链接的任何其他详细信息。有人能澄清一下吗?