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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

0回答

1409閲覧

Wordpressのページャーについて

yukizooo

総合スコア0

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/03/31 05:31

編集2022/01/12 10:55

構成など

通常投稿タイプとカスタム投稿(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)付きでは問題なく動きました。

質問

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問