Дочерние страницы иерархических пользовательских типов записей 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? Могу ли я заставить это работать или мне нужно переосмыслить структуру?

Спасибо вам!

Author: lepardman, 2012-05-09

1 answers

Хорошо, еще через пару часов я удалил 'query_var' => '', и повторно сохранил/сбросил настройки постоянной ссылки. Query_var по умолчанию имеет значение true, и это работает. Кодирующая слепота или что-то в этом роде, лол. Надеюсь, это может помочь кому-то еще.

 2
Author: lepardman, 2012-05-09 21:44:59