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.
最合适的回答,由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