カスタム投稿タイプとカスタム分類が登録されています。カスタム投稿タイプは「メモリカード」と呼ばれ、分類法は「授業」です。この分類法では、「英語」と「フランス語」という2つの用語を作成しました。
このURLに行くと:
example.com/lesson/english
または
example.com/lesson/french
すべてが期待通りに進み、ページをアーカイブするか、taxonomy.phpまたはtaxonomy-english.phpを作成するかどうかを指示されます。
でも試してみると
example.com/lesson
ページが見つかりませんエラーが表示されます。
私の質問は、私がここで何か悪いことをしているのかということです。私はすべての「レッスン」のためにアーカイブページにたどり着くべきではないですか?私は私の登録簿の分類論の議論でこれらを試してみました:
'rewrite' => array( 'slug' => 'lesson' ),
そして
'rewrite' => true,
しかし、どれもうまくいきませんでした。私はこれと同じような他の質問を見たことがあるがそれらは分類学リンクよりもむしろリンクという用語に主に関係している。また、ほとんどのチュートリアルでは、分類法のリンクではなく分類法の階層について説明しています。
これは分類法を作成するためのコードです。
$labels = array(
'name' => _x( 'Lessons', 'taxonomy general name', 'textdomain' ),
'singular_name' => _x( 'Lesson', 'taxonomy singular name', 'textdomain' ),
'search_items' => __( 'Search Lessons', 'textdomain' ),
'all_items' => __( 'All Lessons', 'textdomain' ),
'parent_item' => __( 'Parent Lesson', 'textdomain' ),
'parent_item_colon' => __( 'Parent Lesson:', 'textdomain' ),
'edit_item' => __( 'Edit Lesson', 'textdomain' ),
'update_item' => __( 'Update Lesson', 'textdomain' ),
'add_new_item' => __( 'Add New Lesson', 'textdomain' ),
'new_item_name' => __( 'New Lesson Name', 'textdomain' ),
'menu_name' => __( 'Lessons', 'textdomain' ),
);
$args = array(
'hierarchical' => true,
'labels' => $labels,
'show_ui' => true,
'show_admin_column' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'lesson'),
);
register_taxonomy( 'lesson', array( 'memory-cards' ), $args );
でも試してみると
example.com/lesson
ページが見つかりませんエラーが表示されます。
私があなたの質問に私のコメントで指摘したように、それは実際にはどのように機能するのか、スラッグという用語はURLで指定される必要があります。 example.com/lesson/english
(term slugはenglish
)とexample.com/lesson/french
(term slugはfrench
)は機能しますが、example.com/lesson
は機能しません(term slug not specified)。
example.com/lesson
を機能させる1つの方法は、register_post_type()
を介してCPT has_archive
を登録するときに memory-cards
パラメータをlesson
に設定することです。例えば:
register_post_type( 'memory-cards', array(
'labels' => array(
'name' => 'Memory Cards',
'singular_name' => 'Memory Card',
),
'public' => true,
'has_archive' => 'lesson',
) );
しかし、これはまた、example.com/memory-cards
CPTのデフォルトのアーカイブURLであるmemory-cards
(has_archive
がtrue
に設定されている場合)では、CPTアーカイブが表示されなくなることを意味します。
これを修正するため、またはデフォルトのアーカイブURLを保持するために、add_rewrite_rule()
を使用してexample.com/lesson
の書き換え規則を追加することができます。
register_taxonomy( 'lesson', 'memory-cards', array(
'labels' => array(
'name' => 'Lessons',
'singular_name' => 'Lesson',
),
'rewrite' => true,
// ...other args here...
) );
add_rewrite_rule( 'lesson/?$', 'index.php?post_type=memory-cards', 'top' );
add_rewrite_rule( 'lesson/page/(\d+)/?$', 'index.php?post_type=memory-cards&paged=$matches[1]', 'top' );
2番目の書き換え規則はexample.com/lesson/page/2/
のような paged リクエストを処理します。