我最近一直在使用自定义帖子类型,没有遇到任何重大问题。这次我在尝试新的东西。我想创建一个CPT,它基本上像页面一样工作,具有页面层次结构。
真正的东西是用瑞典语写的,所以我将以“书”为例来说明我希望它是如何工作的。
因此,我首先创建我的新帖子类型:
define(\'BOOKS_HTTP_PATH\', WP_PLUGIN_URL . \'/\' . str_replace(basename(__FILE__), "", plugin_basename(__FILE__)));
function add_custom_post_type_books() {
register_post_type( \'lpm-books\', array(
\'labels\' => array(
\'name\' => \'Books\',
\'singular_name\' => \'Book\',
\'add_new\' => \'New book\',
\'add_new_item\' => \'Add new book\',
\'not_found\' => \'No books found\' ),
\'public\' => true,
\'show_ui\' => true,
\'show_in_nav_menus\' => true,
\'menu_icon\' => BOOKS_HTTP_PATH . \'images/books-icon.png\',
\'menu_position\' => 20,
\'hierarchical\' => true,
\'rewrite\' => array( \'slug\' => \'books\'),
\'capability_type\' => \'page\',
\'supports\' => array(\'title\',\'editor\',\'page-attributes\'),
\'query_var\' => \'\',
\'_builtin\' => false,
)
);
}
add_action( \'init\', \'add_custom_post_type_books\' );
在我的例子中,我对CPT有一个特定的名称,lpm books(在这个例子中可能听起来很奇怪,但正如我前面所说的,我是用瑞典语写的,但如果可能的话,我希望帖子类型的名称是英语)。我为我的永久链接将重写段设置为books,然后添加
\'hierarchical\' => true
和
\'supports\' => \'page-attributes\'
使属性元框可用。
在Admin->Books中,视图如下所示:
第1册第1章第2章第2册第1章第2章因此,我添加了一个名为“我的书”(slug:My books)的常规页面,以有一个“起始页”,描述我的藏书。url为http://www.example.com/my-books/
. 在那一页上,我列出了我所有新增的书籍及其章节。
如果我点击Book 1(或Book 2),效果会非常好。url为http://www.example.com/books/book-1/
. 但如果我想查看章节(url:http://www.example.com/books/book-1/chapter-1
) 我得了404分。
我的permalink结构是:/%category%/%postname%/
我真的不明白为什么自定义子页(帖子)是404。因为我的常规起始页“我的书”slug与CPT名称或重写slug都没有冲突,我想我已经完全没有想法了。
注意:我还尝试删除\'rewrite\' => array( \'slug\' => \'books\')
但我在“儿童贴子”上仍然得到404分。
你们在创建层次化CPT时是怎么做的?我能做到这一点吗?还是我需要重新考虑结构?
非常感谢。