在什么情况下,我可以将我的CPT命名为与我的CPT页面相同的名称?

时间:2013-11-01 作者:Howdy_McGee

故事是这样的:默认情况下,您不能拥有与需要为您的CPT创建的页面相同的CPT slug。不过,有几次我能做到这一点,而且效果很好。例如:

我创建我的CPT

register_post_type(\'schedule\', array(
        \'labels\'            =>  array(
            \'name\'          =>      __(\'Events\'),
            \'singular_name\' =>      __(\'Event\'),
            \'all_items\'     =>      __(\'View Events\'),
            \'add_new\'       =>      __(\'New Event\'),
            \'add_new_item\'  =>      __(\'New Event\'),
            \'edit_item\'     =>      __(\'Edit Event\'),
            \'view_item\'     =>      __(\'View Event\'),
            \'search_items\'  =>      __(\'Search Events\'),
            \'no_found\'      =>      __(\'No Eventss Found\'),
            \'not_found_in_trash\' => __(\'No Events in Trash\')
                                ),
        \'public\'            =>  true,
        \'publicly_queryable\'=>  true,
        \'show_ui\'           =>  true, 
        \'query_var\'         =>  true,
        \'show_in_nav_menus\' =>  false,
        \'rewrite\'           =>  array(\'slug\' => \'schedule\', \'with_front\' => false),
        \'capability_type\'   =>  \'post\',
        \'hierarchical\'      =>  false,
        \'menu_position\'     =>  21,
        \'supports\'          =>  array(\'title\',\'editor\', \'thumbnail\'),
        \'has_archive\'       =>  false
    ));
我有我的CPT页面:

Custom Post Type Page - With Same Slug

我的permalink结构是:/press-releases/%year%/%monthnum%/%day%/%postname%/

最后,我有一个名为“page schedule.php”的页面模板,在这里我可以查询我的CPT并将其显示得很好,甚至可以分页。我不是唯一一个能够做到这一点的人,因为我在wordpress上看到了一些帖子。org论坛声称也能做到这一点。

我的问题是,到底是什么导致了这种情况的发生,以及如何复制它,以便在没有插件的情况下实现良好的CPT permalink结构?

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

这没有什么神奇之处,你的帖子类型没有存档(has_archive 是false),因此没有与您的帖子类型匹配的重写规则/%post_type%/, 您的帖子类型的唯一现有规则是/%post_type%/%some_other_thing%/, 这样就不会与您的页面发生冲突。

结束

相关推荐

Get attachment by slug

我希望通过指定某个slug,然后在image src代码中回显该地址来获取图像。图像的slug将是“book site header”我查看了wordpress codex中的get\\u wp\\u附件和get\\u wp\\u attachment\\u元数据,但都没有提到slug。slug必须是唯一的,并且保存在DB中,因此必须能够根据slug找到它,然后获取相关的文件url。