php 如何禁用自定义文章类型的页面创建,但允许创建带有文章类型的页面?

wyyhbhjk  于 2023-01-16  发布在  PHP
关注(0)|答案(1)|浏览(116)

我有一个名为integrations的自定义帖子类型,我是这样注册的:

register_post_type(
  'Integrations',
  theme_build_post_args(
    // $slug, $singular, $plural
    'integrations', 'Integration', 'Integrations',
    array(
      'menu_position' => 20,
      'has_archive'     => true,
      'public'          => false,
      'publicly_queryable'  => false,
      'rewrite'   => array( 'slug' => false, 'with_front' => false ),
      'supports'            => array('title', 'revisions'),
      'taxonomies'      => array('categories'),
    )
  )
);

我不希望在注册上述帖子类型后创建一个页面,因为我希望创建一个位于/integrations上的page,这将是更多的定制。此外,我有位于此页面下的子页面,所以我希望它成为一个页面,这样我就可以将其作为parent分配给子页面。因此,我添加了'publicly_queryable' => false到上面。
现在,我已经创建了一个名为Integrations的page,它位于/integrations上,但在访问它时,它会重定向到主页。
我敢肯定这是因为'publicly_queryable' => false,但是,删除它不会解决我的问题,因为鼻涕虫将存在的职位类型注册。
有什么办法吗?

lp0sw83n

lp0sw83n1#

删除'publicly_queryable' => false,这将告诉wordpress不要让任何人访问该页面。
尝试执行template_redirect操作,并检测页面是否为integrations

function custom_integrations_template() 
{
    if (is_page('integrations')) {
        get_template_part('page', 'integrations');
        exit();
    }
}

add_action('template_redirect', 'custom_integrations_template');

当有人访问/integrations时,它将在主题目录中查找page-integrations.php文件。

相关问题