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

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

新規登録して質問してみよう
ただいま回答率
85.37%
WordPress

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

PHP

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

Q&A

解決済

1回答

1544閲覧

[WordPress]カスタムタクソノミーのタームのアーカイブページのページ送りが404になる

mmpp_1111

総合スコア0

WordPress

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

PHP

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

プラグイン

プラグイン(plug-in)は、ソフトウェアアプリケーションの機能拡張の為に開発された、一組のソフトウェアコンポーネントのことを指します。

0グッド

0クリップ

投稿2020/06/03 02:50

編集2020/06/03 03:09

お力をお借りしたく、こちらに投稿させていただきます。

###発生している現象

表題の通り、カスタム投稿タイプのカスタムタクソノミーに属するタームのアーカイブページで
ページ送り2ページ目が404になります。

###基本情報

wordpress バージョン 5.4.1(現時点最新)

カスタム投稿タイプ AAA
カスタムタクソノミー AAA_cat
ターム BBB,CCC,DDD

パーマリンク構造
http://example.com/AAA/ AAAのアーカイブ
http://example.com/AAA/BBB/ タームBBBのアーカイブ
http://example.com/AAA/page/2/ AAAのアーカイブのページ送り2ページ目

上記は問題ないのですが、タームBBBのアーカイブページで出力されたページ送り

http://example.com/AAA/BBB/page/2/

以降が404になってしまいます。

上記パーマリンクを実現するため、プラグイン Custom Post Type Permalinksを使用。
本来であればタームBBBのアーカイブが
http://example.com/AAA_cat/BBB/
となるのを
http://example.com/AAA/BBB/ にしています。
(設定は後述します)

###functions.phpの設定

functions.phpに以下の記述でカスタム投稿タイプとカスタムタクソノミーを設定しています。

functions.php
カスタム投稿タイプに関する記述

function create_post_type_column() { register_post_type( 'AAA', array( 'label' => 'AAA', 'labels' => array( 'all_items' => 'AAA一覧' ), 'public' => true, 'has_archive' => true, 'menu_position' => 10, 'supports' => array( 'title', 'editor', 'author', 'thumbnail') ) ); } add_action( 'init', 'create_post_type_column' );

カスタムタクソノミーに関する記述

function add_taxonomy() { register_taxonomy( 'AAA_cat', 'AAA', array( 'label' => 'AAAカテゴリ', 'singular_label' => 'AAAカテゴリ', 'labels' => array( 'all_items' => 'AAAカテゴリ一覧', 'add_new_item' => 'AAAカテゴリを追加' ), 'public' => true, 'show_ui' => true, 'show_in_nav_menus' => true, 'rewrite' => true, 'rewrite' => array('slug' => 'AAA'), 'hierarchical' => true ) ); } add_action( 'init', 'add_taxonomy' );

###Custom Post Type Permalinksの設定

パーマリンクを変更するため、Custom Post Type Permalinks
https://ja.wordpress.org/plugins/custom-post-type-permalinks/)で

http://exapmle.com/AAA/%AAA_cat%/%postname%/

has_archive: true / with_front: true

という設定にし、

カスタムタクソノミーのアーカイブに、 post_type クエリーを追加。

にチェックを入れています。

###テンプレートファイルへの記述

続いてテンプレートファイルですが、
http://example.com/AAA/BBB/
には、taxonomy-AAA_cat.phpが適用されています。

以下がtaxonomy-AAA_cat.phpの記述です。
記事取得にはメインループを使用しており、WP_queryなどは使用していません。

taxonomy-AAA_cat.php

<?php if(have_posts()): while(have_posts()): the_post(); ?> 〜アーカイブ用記事の内容〜 <?php endwhile; ?><?php else: ?><?php endif; ?> //以下ページャー部分 <?php $big = 9999999999; $arg = array( 'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ), 'current' => max( 1, get_query_var('paged') ), 'total' => $wp_query->max_num_pages, 'prev_text' => __('< PREV'), 'next_text' => __('NEXT >'), ); echo paginate_links($arg); ?>

上記で問題なくページャーの出力はできていますが、いざページ送りをクリックすると、

http://exapmle.com/AAA/BBB/page/2/
が404になるという状態です。

・ページャーの出力は問題なくできていること
http://exapmle.com/AAA/page/2/ というカスタム投稿タイプのページ送りは問題なく表示できること

以上から、パーマリンク構造を変更した際のリライトルール周りのエラーだと推測していますが、
行き詰まっております。

###試したこと

https://umi.design/blog/attachment-customtype/

こちらを参考にfunctions.phpに

function chg_qerytaxpage($query) { if ( is_admin() || ! $query->is_main_query() ) { return; } if ( $query->is_tax() ) { $query->set( 'post_type', 'AAA' ); $query->set( 'post_mime_type', 'image/jpeg' ); $query->set( 'post_status', 'inherit' ); $query->set( 'taxonomy', 'AAA_cat' ); } } add_action( 'pre_get_posts', 'chg_qerytaxpage' );

を記述しても、逆にページに記事が表示されなくなりました。

http://taneakashi.ad-mk.com/custom-taxonomy-2nd-404.html

こちらはそもそもWP_Query()を使用していないので当てはまりませんでした。

また、
https://teratail.com/questions/158663?link=qa_related_pc
上記質問の

add_rewrite_rule('投稿タイプ/([^/]+)/?$', 'index.php?カスタムタクソノミー=$matches[1]', 'top');

こちらをカスタムタクソノミーをAAA_cat、投稿タイプをAAAに修正し追加しても変わりませんでした。

足りない情報がございましたらご指摘ください。
どうぞよろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

自己解決

AAA_cat部分に/page/2/用のリライトルールを追加することで自己解決しました。

functions.php

register_taxonomy( 'AAA_cat', 'AAA', array( 'label' => 'AAAカテゴリ', 'singular_label' => 'AAAカテゴリ', 'labels' => array( 'all_items' => 'AAAカテゴリ一覧', 'add_new_item' => 'AAAカテゴリを追加' ), 'public' => true, 'show_ui' => true, 'show_in_nav_menus' => true, 'rewrite' => true, 'rewrite' => array('slug' => 'AAA'), 'hierarchical' => true ) ); add_rewrite_rule('AAA/([^/]+)/page/([0-9]+)/?$', 'index.php?AAA_cat=$matches[1]&paged=$matches[2]', 'top'); //追加部分

当初、上記を追加しても最初は404は解消せず、
Custom Post Type Permalinksを一旦停止し、再度有効化(再起動)したところ、
無事 /AAA/BBB/page/2/ が表示されました。

参考ページ
https://www.codamac.jp/blog/custom-taxonomy-404/
(おまけの直前部分を参考にしました)

同じところで悩んでる方が解消できれば幸いです。

投稿2020/06/04 04:40

編集2020/06/04 04:44
mmpp_1111

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問