Changing slug of all posts

时间:2021-11-30 作者:JohnG

我有一个网站,有十几种自定义帖子类型。我想更改默认的帖子类型,使其URL有一段/news/。

在我的函数文件中,我有:

    add_action( \'init\', \'change_post_object\' );
    // Change dashboard Posts to News
    function change_post_object() {
        $get_post_type = get_post_type_object(\'post\');
        $labels = $get_post_type->labels;
        $labels->name = \'News\';
        $labels->singular_name = \'News\';
        $labels->add_new = \'Add News Item\';
        $labels->add_new_item = \'Add News Item\';
        $labels->edit_item = \'Edit News\';
        $labels->new_item = \'News\';
        $labels->view_item = \'View News Item\';
        $labels->search_items = \'Search News\';
        $labels->not_found = \'No News found\';
        $labels->not_found_in_trash = \'No News found in Trash\';
        $labels->all_items = \'All News\';
        $labels->menu_name = \'News\';
        $labels->name_admin_bar = \'News\';
        $rewrite = $get_post_type->rewrite;
        $rewrite->slug = \'news-events/news\';
        $rewrite->with_front = \'true\';
    }
。。。除了重写slug之外,所有这些都能正常工作。

许多帖子建议将Permalinks页面上的permalink结构从/%postname%/更改为/news/%postname%/。这可以工作,但会破坏所有其他自定义帖子类型。

我该怎么做?!

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

如前所述更改Permalinks结构,但同时为所有其他CPT添加(或更改)以下行:

$rewrite->with_front = \'false\';
设置with_front 如果设置为false,将删除永久链接设置中列出的任何前缀。

如果设置并点击Permalinks页面刷新重写规则并不能立即解决问题,那么您可能需要调用unregister_post_type() 对于每个现有的CPT,在重新注册之前,因为它们在某些情况下可能很难缓存。