web-dev-qa-db-ja.com

階層型のカスタム投稿タイプ404の子ページ

私は最近カスタム投稿タイプを使っていますが、大きな問題はありません。今回は何か新しいことに挑戦しています。基本的にPagesのように動作するCPTをページ階層で作成したい。

本物はスウェーデン語なので、どのように機能させたいかの例として "Books"を使用します。

そこで最初に新しい投稿タイプを作成します。

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です(この例では奇妙に聞こえるかもしれませんが、先に述べたように、スウェーデン語でこれをやっていますが、可能であれば英語でポストタイプ名を付けたいです)。私はパーマリンクのためにrewrite slugをbooksに設定し、'hierarchical' => true'supports' => 'page-attributes'を追加してAttribute meta boxを利用可能にします。

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と表示されます。

私のパーマリンク構造は、次のとおりです。/%category%/%postname%/

私は本当にカスタム子ページ(投稿)404の理由を理解することはできません。私の通常のスタートページ "My Books"スラッグはCPT名と書き換えスラッグのどちらとも衝突しないので、私はすべて考えていないと思う。

注:'rewrite' => array( 'slug' => 'books')も削除しようとしましたが、それでも「子投稿」に404が表示されます。

階層型CPTを作成する際にどのようにしますか。この仕事をすることができますか、それとも構造を再考する必要がありますか?

ありがとうございました!

3
lepardman

さて、あと数時間後に'query_var' => '',を削除し、パーマリンクの設定を再保存/フラッシュしました。 Query_varのデフォルトはtrueで、それは機能します。失明または何か笑のコーディング。これが他の人に役立つことを願っています。

2
lepardman