Дочерние страницы иерархических пользовательских типов записей 404s
В последнее время я работаю с пользовательскими типами сообщений, и у меня не было никаких серьезных проблем. На этот раз я пробую что-то новое. Я хочу создать 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-книги (в этом примере может показаться странным, но как я уже говорил ранее, я делаю это на шведском языке, но мне бы хотелось, чтобы название типа сообщения было на английском, если это возможно). Я устанавливаю параметр перезаписи в книги для моих постоянных ссылок и добавляю 'hierarchical' => true
и 'supports' => 'page-attributes'
, чтобы сделать доступным мета-поле атрибута.
В Admin->Книгах представление будет примерно таким:
- Книга 1
- Глава 1
- Глава 2
- Книга 2
- Глава 1
- Глава 2
- ...
Итак, я добавляю обычная страница под названием "Мои книги" (slug: my-books), на которой есть "начальная страница", описывающая мою коллекцию книг. URL-адрес http://www.example.com/my-books/
. На этой странице я перечисляю все добавленные мной книги и их главы.
Отлично работает, если я нажму на Книгу 1 (или книгу 2). URL-адрес http://www.example.com/books/book-1/
. Но если я хочу просмотреть главу (url: http://www.example.com/books/book-1/chapter-1
) Я получаю 404'.
Моя структура постоянной ссылки такова: /%category%/%postname%/
Я действительно не могу понять, почему пользовательские дочерние страницы (сообщения) 404-х. С тех пор как моя обычная стартовая страница "Мои книги" слизнет не конфликтует ни с названием CPT, ни со слизняком перезаписи, я думаю, что у меня закончились мысли в банкомате.
Примечание: Я также пытался удалить 'rewrite' => array( 'slug' => 'books')
, но я все еще получаю 404 в "дочерних сообщениях".
Как вы, ребята, поступаете при создании иерархических CPT? Могу ли я заставить это работать или мне нужно переосмыслить структуру?
Спасибо вам!
1 answers
Хорошо, еще через пару часов я удалил 'query_var' => '',
и повторно сохранил/сбросил настройки постоянной ссылки. Query_var по умолчанию имеет значение true, и это работает. Кодирующая слепота или что-то в этом роде, лол. Надеюсь, это может помочь кому-то еще.