前提・実現したいこと
WordPressで自作テーマでコーポレイトサートを制作しています。
パンくずを生成するのにBreadcrumb-NavXTプラグインを使用しています。
パンくずは想定通り表示されているのですがarchive.phpですべての投稿を参照する際にエラーが表示されている状態です。
アーカイブに関するfunction.phpの記載としては
- カスタマイズを行っておりますがこちらコメントアウトしても同じエラーが表示されてます。
- 投稿は
blog
というスラッグでアーカイブを表示させてます。 - 投稿一覧のパーマリンクやリライトルールを変更しております。
※ソースコードは下記に記載しました。
プラグインの中身の該当のファイルで修正することでエラーは出なくなりました(最後に記入してます)が、プラグインの中身の修正は少し不安なので他に解決方法がありましたらご教授いただきたいです。
よろしくお願いいたします。
エラーメッセージ
デフォルトの投稿アーカイブページのみ下記のエラーが発生しています。
Warning: Undefined array key "bpost_post_archive_display" in /var/www/html/wp-content/plugins/breadcrumb-navxt/class.bcn_breadcrumb_trail.php on line 1105 Warning: Undefined array key "bpost_post_archive_display" in /var/www/html/wp-content/plugins/breadcrumb-navxt/class.bcn_breadcrumb_trail.php on line 809
ソースコード
header.phpにて出力させてます。
php
1<?php 2if ( function_exists( 'bcn_display' ) ) { 3bcn_display_list(); 4} 5?>
アーカイブに関係するfunction.phpのカスタマイズ
php
1/** 2 * パンくず 3 * 4 * @param string $breadcrumb_trail . 5 */ 6function my_static_breadcrumb_adder( $breadcrumb_trail ) { 7 if ( is_search() || get_post_type() === 'post' ) { 8 $item = new bcn_breadcrumb( 'SIOSDX Blog', '', array( '' ), home_url( 'blog' ), null, true ); 9 $stuck = array_pop( $breadcrumb_trail->breadcrumbs ); 10 $breadcrumb_trail->breadcrumbs[] = $item; 11 $breadcrumb_trail->breadcrumbs[] = $stuck; 12 } 13 if ( is_tag() ) { 14 $item = new bcn_breadcrumb( 'tags', '', array( '' ), null, null, true ); 15 $tag_name = array_shift( $breadcrumb_trail->breadcrumbs ); 16 array_unshift( $breadcrumb_trail->breadcrumbs, $tag_name, $item ); 17 } 18 if ( is_singular( 'solution' ) ) { 19 if ( 5 === count( $breadcrumb_trail->trail ) ) { 20 unset( $breadcrumb_trail->trail[1] ); 21 } 22 } 23} 24/** 25 * 投稿アーカイブページの作成. 26 * 27 * @param string $args . 28 * @param string $post_type . 29 */ 30function post_has_archive( $args, $post_type ) { 31 if ( 'post' === $post_type ) { 32 $args['rewrite'] = true; 33 $args['has_archive'] = 'blog'; 34 } 35 return $args; 36} 37add_filter( 'register_post_type_args', 'post_has_archive', 10, 2 ); 38/** 39 * デフォルト投稿のパーマリンク設定 40 * 41 * @param string $permalink . 42 */ 43function add_article_post_permalink( $permalink ) { 44 // デフォルトの投稿の記事詳細に`/blog/`(アーカイブ名)を追加する . 45 $permalink = '/blog' . $permalink; 46 return $permalink; 47} 48add_filter( 'pre_post_link', 'add_article_post_permalink' ); 49/** 50 * リライトルール 51 */ 52add_rewrite_rule( 'blog/([^/]+)/?$', 'index.php?category_name=$matches[1]', 'top' ); 53add_rewrite_rule( 'blog/tags/([^/]+)/?$', 'index.php?tag=$matches[1]', 'top' ); 54add_rewrite_rule( 'blog/([^/]+)/page/([0-9]+)/?$', 'index.php?category_name=$matches[1]&paged=$matches[2]', 'top' );
試したこと①
https://teratail.com/questions/331392
こちらの質問と回答を参考に、blog
というスラッグで固定ページを作成しました。
- 管理画面の設定>表示設定 からホームページの表示を固定ページを選択し、作成した固定ページに設定
- Breadcrumb NavXT 設定 から「ブログを示すパンくず」のチェックを外す
結果
1105行目のエラーは消えましたが809行目のエラーは残ったままという状態になりました。
ですが他プラグインのエラーも発生してしまい、この方法は断念しました。
試したこと②
プラグインの中身を修正しました。
bpost_post_archive_display
がarray
の中にいないというエラーなので
class.bcn_breadcrumb_trail.php
100行目に
php
1'bpost_post_archive_display' => true,
を追加しました。
結果
エラーは2つとも消えましたが
- この方法があっているのか
- プラグインの中身はそもそもいじるのはあまり良くないのではないか
- プラグインの中身をいじらず解決できるのなら解決したい
という懸念があるので、ご教授いただけたらと思います。
バージョン情報
PHPバージョン 8.0
MYSQLバージョン 5.7
WPバージョン 5.8
あなたの回答
tips
プレビュー