質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.37%

Wordpressのページャーについて

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 322

score 0

構成など

通常投稿タイプとカスタム投稿(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/

// カスタム投稿の設定
function create_post_type() {
  register_post_type(
  'member',
  array(
    'label' => 'MEMBER',
    'labels' => array(
       'all_items' => 'MEMBER投稿',
       ),
    'description' => 'MEMBER投稿です',
    'public' => true,
    'menu_position' => 6,
    'has_archive' => true,
    'show_in_rest' => true,
    'rewrite' => array('with_front' => false),
    'supports' => array(
      'title',
      'editor',
      'author',
      'custom-fields',
      'thumbnail',
      ),
    )
  );
}
add_action( 'init', 'create_post_type' );
add_theme_support( 'post-thumbnails' );
// タクソノミーの設定
function add_taxonomy() {
  register_taxonomy(
  'member_cat',
  'member',
  array(
    'label' => 'カテゴリー',
    'singular_label' => 'カテゴリー',
    'labels' => array(
      'all_items' => 'カテゴリー一覧',
      'add_new_item' => '新規カテゴリーを追加'
    ),
    'public' => true,
    'show_ui' => true,
    'show_in_nav_menus' => true,
    'hierarchical' => true
    )
  );
}
add_rewrite_rule('member/([^/]+)/?$', 'index.php?member_cat=$matches[1]', 'top');
add_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/

//カスタム投稿パーマリンク「/taxonomy/」削除
//※これのみ記載した場合、カスタム投稿のページャーは上手くいきました
function my_custom_post_type_permalinks_set($termlink, $term, $taxonomy){
  return str_replace('/'.$taxonomy.'/', '/', $termlink);
}
add_filter('term_link', 'my_custom_post_type_permalinks_set',11,3);

add_rewrite_rule( 'member/([^/]+)/?$', 'index.php?member_cat=$matches[1]', 'top' );
add_rewrite_rule( 'member/([^/]+)/page/([0-9]+)/?$', 'index.php?member_cat=$matches[1]&paged=$matches[2]', 'top' );
// URLから/category/を削除する
//※これを追記した場合、通常投稿のページャー(一覧)・カスタム投稿のページャーは上手くいきましたが
通常投稿のカテゴリのページャーが404になりました
add_filter('user_trailingslashit', 'remcat_function');
add_filter('init','flushRules');
add_filter('rewrite_rules_array','wp_insertMyRewriteRules');

function remcat_function($link) {
  return str_replace("/category/", "/", $link);
}
function flushRules() {
  global $wp_rewrite;
  $wp_rewrite->flush_rules();
}
function wp_insertMyRewriteRules($rules) {
  $newrules = array();
  $newrules['(news)/page/?([0-9]{1,})/?$'] = 'index.php?pagename=$matches[1]&paged=$matches[2]';
  return $newrules + $rules;
}

問題

通常投稿・カスタム投稿両方とも
どうやってもページャーが上手くいきません・・・。
(2P以降404が表示される)

やったこと

そもそもコピペで繋ぎ合わせたコードなので、上記に記載した
// URLから/category/を削除する
を削除して動くか確認しました。

https://hoge.com/news/category/topics/page/2/
https://hoge.com/news/member_cat/web/page/2/

category(taxonomy)付きでは問題なく動きました。

質問

どのように修正して、どのようなコードを追加すれば良いのか
教えていただけますでしょうか・・?

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る