現在、wordpressでサイトを構築しています。
表題の通りカスタム投稿タイプのタクソノミー一覧のURLを任意の固定ページ配下にしたいのですが、分からず困っています。
関係あるか分かりませんが、ワードプレスのパーマリンクの設定はカスタム構造で以下のようにしています。
/%category%/%postname%/
詳細としては、日本語版のページのほか英語版もあるため、固定ページで英語版トップを表示させているため、URLは以下のようにしています。
txt
1https://localhost/sitename/en/
ここに英語版のインフォとニュースリリースを2つの記事を載せる為、「info-news-en」というカスタム投稿タイプで作成しました。
タクソノミーはinfo-news-en_catとしています。
その際、rwriteでURLを以下のように設定して望み通りにはできています。
txt
1rwrite : en/info-news-en 2URL:https://localhost/sitename/en/info-news-en
ソースコードは下記です。
php
1register_post_type('info-news-en', [ 2 'labels' => [ 3 'name' => 'Info / NewsRelease', 4 'singular_name' => 'info-news-en', 5 ], 6 'public' => true, 7 'has_archive' => true, 8 'menu_position' => 6, 9 'supports' => array( 10 'title', 11 'editor', 12 'thumbnail', 13 'revisions', 14 'excerpt', 15 'custom-fields', 16 ), 17 'show_in_rest' => true, る 18 'taxonomies' => array('info-news-en_cat'), 19 'rewrite' => array('slug' => 'en/info-news-en','with_front' => false) 20 ]); 21 22//カスタムタクソノミーの登録 23 register_taxonomy( 24 'info-news-en_cat', //カスタムタクソノミー名 25 'info-news-en', //このタクソノミーが使われる投稿タイプ 26 array( 27 'label' => 'カテゴリー', //カスタムタクソノミーのラベル 28 'labels' => array( 29 'popular_items' => 'よく使うカテゴリー', 30 'edit_item' => 'カテゴリーを編集', 31 'add_new_item' => 'カテゴリーを追加', 32 'search_items' => 'カテゴリーを検索', 33 ), 34 'public' => true, // 管理画面及びサイト上に公開 35 'description' => 'カテゴリーの説明文です。', //説明文 36 'hierarchical' => true, //カテゴリー形式 37 'show_in_rest' => true, //Gutenberg で表示 38 ) 39 ); 40
ここで管理画面上でタクソノミー親「info-news-en」として 子ターム「info-en」「news-release-en」を作成しました。
記事一覧は、「archive-info-news-en.php」として一覧を表示して、各ターム一覧をタブを設定して記事を切り替えたいと思い、以下の記述をして子ターム名とリンクを出力しています。
php
1<nav class="nav-cat"> 2 <ul class="nav-cat__list"> 3 <?php 4 $terms = get_terms('info-news-en_cat',array( 5 'child_of'=>12 親のタームの除く 6 ) 7 ); 8 foreach ( $terms as $term ) { 9 echo '<a href="'.get_term_link($term).'">'.$term->name.'</a>'; 10 } 11 ?> 12 </nav> 13
この状態でクリックすると以下のURLになってしまします。
「en」が消えて「info-news-en_cat」というカスタムタクソノミー名の後にターム名が表示されている状態です。
txt
1http://localhost/sitename/info-news-en_cat/news-release-en/
理想としては以下のようにしたいのです。
txt
1http://localhost/sitename/en/info-news-en/news-release-en/
どなたか方法が分かればご教授いただければと思っています。
よろしくお願いいたします。
あなたの回答
tips
プレビュー