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

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

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

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

PHP

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

Q&A

解決済

1回答

366閲覧

wp page navi使用時、特定カテゴリのアーカイブでのみページ送りの404エラーが発生します

try-on-re

総合スコア3

WordPress

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

PHP

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

0グッド

0クリップ

投稿2023/02/16 16:06

編集2023/02/19 20:28

実現したいこと

プラグイン wp page navi を使用したサイトで、カスタム投稿のページ送りをさせたいのだが、特定ページでのみ2ページ目以降404エラーが発生する。

前提

wp page naviの404エラーは事例がたくさんあるようなので、function.phpへのコード追加等も試し、いくつかのカテゴリでは解消されたものの、特定アーカイブページでのみ404エラーが発生する。
wp page naviは装飾を加え、my page navi で呼び出すように設定。
他カテゴリページとの差異としては、投稿タイトルの他に見出しアイコンを付ける記述があるが、$pagedに関する部分は同じ。

発生している問題・エラーメッセージ

特定カテゴリのアーカイブphpからカスタム投稿一覧を閲覧した時に、2ページ目以降へのページ送りで404エラーが発生する。

該当のソースコード

###archive-category-a.php

<?php get_header(); $paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1; $custom_args = array( 'post_type' => 'category-a', 'posts_per_page' => 5, 'paged' => $paged ); $custom_query = new WP_Query( $custom_args ); ?> <div id="main"> <div class="position-relative bc-gray-light bbsd"> <div class="container"> <div class="row no-gutters justify-content-center align-items-center h-6rem"> <div class="col-11 col-md-12 offset-lg-1"> <h1 id="ct-title" class="fz-lg fz-md-sm ls-02 font-MidashiGo clr-blk"><i class="fal fa-rss fa-flip-horizontal"></i> ページタイトル </h1> </div> </div> </div> </div>
<section> <div class="container py-4 py-lg-5 mt-sm-4 mb-3"> <div class="row justify-content-center"> <div class="col-11 col-md-8 mb-5 mb-md-5"> <p>見出しテキスト</p> </div> <div class="col-11 col-md-8 mb-5 mb-md-0"> <ul class=""> <?php while ( $custom_query->have_posts() ) : $custom_query->the_post(); ?> <li class="bbsd bc-gray-light pb-1 mb-3 row"> <div class="col-12"> <p class="mb-1"><time class="clr-blk xsmall ls-0 font-MidashiGo" datetime="<?php the_time('Y-m-d'); ?>"><?php the_time('Y.m.d'); ?></time> <?php if (has_term( 'pressreleases', 'presscate' )) { echo "<span class='presscate1 py-1 px-2 fz-xxs'>記事サブカテゴリ名称A</span>"; }else{ echo "<span class='presscate2 py-1 px-2 fz-xxs'>記事サブカテゴリ名称B</span>"; } ?></p> <p class="fz-xs ls-02 font-MidashiGo mb-1"><a class="clr-navy" href="<?php the_permalink(); ?>"><?php the_title(); ?></a></p> </div> </li> <?php endwhile; // end of the loop. ?> </ul> </div> </div> </div> </section> <div class="bc-gray-light btsd bbsd"> <div class="container px-0 px-sm-3"> <?php if(function_exists('my_pagenavi')) { my_pagenavi(); } ?> <?php wp_reset_query(); ?>

試したこと

パーマリンク設定の変更:カスタム【サイトURL/カテゴリ名/%post_id%.html】に変更
ファイルマネージャー等で、表示させたいカテゴリと重複するフォルダがない事を確認しました
投稿表示数の変更:ダッシュボード3か所の統一
プラグインFV Top Level CategoriesとTop Level Categories Fix の導入

問題が生じているarchive-a.phpページに、問題のないarchive-b.phpの記述をコピーした場合も404エラーは発生し、逆にarchive-b.phpにarchive-a.phpの記述をコピーした場合はaカテゴリの記事でもページ送りが行われることを確認しました。
※archive_a.phpの記述自体には問題がない事の確認

補足情報(FW/ツールのバージョンなど)

同様のご経験のある方のアドバイスお待ちしています。

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

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

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

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

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

guest

回答1

0

自己解決

function.php内に```ここに言語を入力

function customize_eventtaxonomy_archive_display ( $query ) {
if (!$query->is_main_query())
return;
if(is_tax('example_category')){
$query->set( 'post_type', 'example' );
$query->set( 'meta_key', 'upload_date' );
$query->set( 'orderby', 'meta_value' );
$query->set( 'posts_per_page', '-1' );
$query->set( 'order', 'ASC' );
} else if($query->query['category_name'] == 'exeample'){
$query->set('post_type',array('post', 'example'));
$paged = $paged = get_query_var('paged') ? get_query_var('paged') : 1;
$query->query_vars = array(
'post_type'=> 'eventreport',
'paged' => $paged
);
} else if($query->query['category_name'] == 'example2'){
$query->set('post_type',array('post', 'example2'));
$paged = $paged = get_query_var('paged') ? get_query_var('paged') : 1;
$query->query_vars = array(
'post_type'=> 'example',
'paged' => $paged
);

} else if(preg_match('/date\/([0-9]{4})?(\/([0-9]{0,}))?/', $query->query['category_name'], $matches, PREG_OFFSET_CAPTURE, 0)){ $query->set('post_type',array('post', 'post')); //var_dump($matches); $year = $matches[1][0]; $query->set('year', $year); if($matches[3]) $query->set('monthnum', $matches[3][0]); $paged = $paged = get_query_var('paged') ? get_query_var('paged') : 1; $query->query_vars = array( 'post_type'=> 'post', 'year'=>$year, 'monthnum'=>$matches[3][0], 'paged' => $paged ); }

}

add_action( 'pre_get_posts', 'customize_examtaxonomy_archive_display' );

add_filter( 'category_template', function ( $template )
{
global $post;

$cat = get_query_var('cat'); if($cat!=null) return $template; // Try to locate our new desired template switch($post->post_type){ case 'eventreport': $locate_template = locate_template( 'archive-example.php' ); break; case 'temporary': $locate_template = locate_template( 'archive-example2.php' ); break; default: $locate_template = locate_template( 'archive.php' ); break; }
でカテゴリ分の追記をすることで解決しました。

投稿2023/02/19 11:28

try-on-re

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問