私は最近カスタム投稿タイプを使っていますが、大きな問題はありません。今回は何か新しいことに挑戦しています。基本的に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では、ビューは次のようになります。
それで、私は私の本のコレクションを記述する「スタートページ」を持つために私の本(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を作成する際にどのようにしますか。この仕事をすることができますか、それとも構造を再考する必要がありますか?
ありがとうございました!
さて、あと数時間後に'query_var' => '',
を削除し、パーマリンクの設定を再保存/フラッシュしました。 Query_varのデフォルトはtrueで、それは機能します。失明または何か笑のコーディング。これが他の人に役立つことを願っています。