当前位置: 首页>>网站问题>>正文


如何禁用自定义帖子类型的单个视图?

webfans 网站问题 , , 去评论

问题描述

我创建了一个自定义帖子类型:

register_post_type('sample_post_type',array(
    'labels' => array(
        'name' => _x('Sample Posts', 'post type general name'),
        'singular_name' => _x('Sample Post', 'post type singular name')
    ),
    'public' => true,
    'show_in_nav_menus' => false,
    'exclude_from_search' => true
));

如何禁用此特定帖子类型的单个帖子视图?显示简单的404很好,或重定向到主页。这是一个插件,所以我无法创建一个single-sample_post_type.php文件来设置一个空页面。

最佳解决思路

您可以使用template_redirect挂钩重定向自定义帖子类型,您可以使用任何其他URL来代替home_url()和其他参数中的错误代码。

<?php
add_action( 'template_redirect', 'wpse_128636_redirect_post' );

function wpse_128636_redirect_post() {
  $queried_post_type = get_query_var('post_type');
  if ( is_single() && 'sample_post_type' ==  $queried_post_type ) {
    wp_redirect( home_url(), 301 );
    exit;
  }
}
?>

更新:

另一种方法是在注册@gustavo之前提到的自定义帖子时设置'publicly_queryable' => false。但这只会直接给你404,它会隐藏单个和存档,基本上完全隐藏在front-end之外,并且只能设置为自定义帖子。

次佳解决思路

只是设置参数

'publicly_queryable'  => false

当你致电 register_post_type()时

第三种解决思路

更简单的方法是在注册自定义帖子类型时传递以下参数

register_post_type('sample_post_type',array(
'labels' => array(
    'name' => _x('Sample Posts', 'post type general name'),
    'singular_name' => _x('Sample Post', 'post type singular name')
),
'public' => true,
'exclude_from_search' => true,
'show_in_admin_bar'   => false,
'show_in_nav_menus'   => false,
'publicly_queryable'  => false,
'query_var'           => false
));

第四种思路

一。从您的函数文件。

add_action( 'template_redirect', 'redirect_cpt_singular_posts' );
    function redirect_cpt_singular_posts() {
      if ( is_singular('your-cpt-slug') ) {
        wp_redirect( home_url(), 302 );
        exit;
      }
    }

二。从您的single.cpt.php文件:

<?php wp_redirect( home_url() ); exit; ?>

参考资料

本文由朵颐IT整理自网络, 文章地址: https://duoyit.com/article/2079.html,转载请务必附带本地址声明。