構成など
通常投稿タイプとカスタム投稿(member)を設定しています。
※プラグインは使用せず、functions.phpに記載しています。
※通常投稿タイプのスラッグはnewsにしております。
※通常投稿とカスタム投稿それぞれにカテゴリを設定しております。
※ページャーにはプラグイン「WP-PageNavi」を導入しています。
現在の通常投稿
https://hoge.com/news/
https://hoge.com/news/category/topics/
https://hoge.com/news/category/media/
https://hoge.com/news/category/event/
現在のカスタム投稿
https://hoge.com/member/
https://hoge.com/member/member_cat/web/
https://hoge.com/member/member_cat/media/
https://hoge.com/member/member_cat/movie/
php
1// カスタム投稿の設定 2function create_post_type() { 3 register_post_type( 4 'member', 5 array( 6 'label' => 'MEMBER', 7 'labels' => array( 8 'all_items' => 'MEMBER投稿', 9 ), 10 'description' => 'MEMBER投稿です', 11 'public' => true, 12 'menu_position' => 6, 13 'has_archive' => true, 14 'show_in_rest' => true, 15 'rewrite' => array('with_front' => false), 16 'supports' => array( 17 'title', 18 'editor', 19 'author', 20 'custom-fields', 21 'thumbnail', 22 ), 23 ) 24 ); 25} 26add_action( 'init', 'create_post_type' ); 27add_theme_support( 'post-thumbnails' );
php
1// タクソノミーの設定 2function add_taxonomy() { 3 register_taxonomy( 4 'member_cat', 5 'member', 6 array( 7 'label' => 'カテゴリー', 8 'singular_label' => 'カテゴリー', 9 'labels' => array( 10 'all_items' => 'カテゴリー一覧', 11 'add_new_item' => '新規カテゴリーを追加' 12 ), 13 'public' => true, 14 'show_ui' => true, 15 'show_in_nav_menus' => true, 16 'hierarchical' => true 17 ) 18 ); 19} 20add_rewrite_rule('member/([^/]+)/?$', 'index.php?member_cat=$matches[1]', 'top'); 21add_action( 'init', 'add_taxonomy' );
やりたい事
両方ともURLからcategory(taxonomy)を削除したく
下記のコードを記載しました。
(知識があまりなく、コピペで色々試して繋ぎ合わせています)
例:
https://hoge.com/news/category/topics/
↓
https://hoge.com/news/topics/
https://hoge.com/member/member_cat/topics/
↓
https://hoge.com/member/web/
php
1//カスタム投稿パーマリンク「/taxonomy/」削除 2//※これのみ記載した場合、カスタム投稿のページャーは上手くいきました 3function my_custom_post_type_permalinks_set($termlink, $term, $taxonomy){ 4 return str_replace('/'.$taxonomy.'/', '/', $termlink); 5} 6add_filter('term_link', 'my_custom_post_type_permalinks_set',11,3); 7 8add_rewrite_rule( 'member/([^/]+)/?$', 'index.php?member_cat=$matches[1]', 'top' ); 9add_rewrite_rule( 'member/([^/]+)/page/([0-9]+)/?$', 'index.php?member_cat=$matches[1]&paged=$matches[2]', 'top' );
php
1// URLから/category/を削除する 2//※これを追記した場合、通常投稿のページャー(一覧)・カスタム投稿のページャーは上手くいきましたが 3通常投稿のカテゴリのページャーが404になりました 4add_filter('user_trailingslashit', 'remcat_function'); 5add_filter('init','flushRules'); 6add_filter('rewrite_rules_array','wp_insertMyRewriteRules'); 7 8function remcat_function($link) { 9 return str_replace("/category/", "/", $link); 10} 11function flushRules() { 12 global $wp_rewrite; 13 $wp_rewrite->flush_rules(); 14} 15function wp_insertMyRewriteRules($rules) { 16 $newrules = array(); 17 $newrules['(news)/page/?([0-9]{1,})/?$'] = 'index.php?pagename=$matches[1]&paged=$matches[2]'; 18 return $newrules + $rules; 19} 20
問題
通常投稿・カスタム投稿両方とも
どうやってもページャーが上手くいきません・・・。
(2P以降404が表示される)
やったこと
そもそもコピペで繋ぎ合わせたコードなので、上記に記載した
// URLから/category/を削除する
を削除して動くか確認しました。
https://hoge.com/news/category/topics/page/2/
https://hoge.com/news/member_cat/web/page/2/
category(taxonomy)付きでは問題なく動きました。
質問
どのように修正して、どのようなコードを追加すれば良いのか
教えていただけますでしょうか・・?
あなたの回答
tips
プレビュー