我们对CPT重写插件有多大的控制?我可以为我的CPT创建一个没有页面路径的“根”页面,然后有其他页面的路径吗?

时间:2020-11-12 作者:rugbert

假设我有一个叫我不知道的CPT,"Library" 这只是一组;“页码”;("has_archive" => false) 重写段塞是;库;。我还打算创建一组页面,如;关于“,”"E;“存档”;,和;新书;。

我能做点什么吗?我能做一个叫做;主页“;而不是它的urlhttps://example.org/library/home 可能是吗https://example.org/library? 然后about页面的url为https://example.com/library/about

注意-我知道我可以将重写slug设置为/"E;然后创建一个名为“的新页面”;“图书馆”;然后做一些事情,比如;关于;或“或”;“存档”;“的子页”;“图书馆”;但我觉得这只是我的用户对不得不这么做感到不满的额外一步。

如果我做了第二次CPT;图书馆图书“;会不会有人把它的重写段设置为"library/books" 还是我需要一条完全不同的道路?所以我想https://example.org/library/books 作为;图书馆图书“;CPT,然后https://example.org/library/books/book-title 对于单个图书帖子。

1 个回复
SO网友:Sally CJ

在我看来,你可以:

// Via the init hook, do all these:

register_post_type( \'library-books\', [
    \'public\'      => true,
    \'label\'       => \'Library Books\',
    \'rewrite\'     => [ \'with_front\' => false, \'slug\' => \'library/books\' ],
    \'has_archive\' => \'library/books\',
    // other args here
] );

register_post_type( \'library\', [
    \'public\'      => true,
    \'label\'       => \'Libraries\',
    \'rewrite\'     => [ \'with_front\' => false, \'slug\' => \'library\' ],
    \'has_archive\' => false,
    // other args here
] );

add_rewrite_rule( \'^library/?$\', \'index.php?library=home\', \'top\' );
一、 e。

注册library-books 先进行CPT,然后进行library/books 作为重写slug以及has_archive.

然后注册library CPT带library 作为重写段塞,以及has_archive 设置为false.

并为example.com/library 哪些(内部)负载example.com/library/home (这是library CPT,尽管您确实可以修改重写规则的查询以加载不同帖子类型的帖子,例如page).

当然,在library CPT,你不应该在books 就像鼻涕虫一样。

相关推荐

Hardcoded paths in my plugin

很抱歉问这个愚蠢的问题:我正在尝试创建一个基本插件,我想从它的主文件中引用与主插件位于同一目录中的两个目录中的文件。我试着这样引用他们:plugin_dir_path( __FILE__ ).\'js/my.js\' 或plugin_dir_path( __FILE__ ).\'imgs/myImg.jpg\'但它确实创造了一条不适合我的道路。如果我对绝对路径进行硬编码,任何操作都可以正常工作,因此这可以正常工作:http://mydomain/blog/wp-content/plugins/hello-