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

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

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

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

Q&A

0回答

1062閲覧

WordPress Breadcrumb-NavXTによるUndefined array keyエラー

Himeka

総合スコア0

WordPress

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

0グッド

0クリップ

投稿2021/08/16 01:37

編集2021/08/16 01:48

前提・実現したいこと

WordPressで自作テーマでコーポレイトサートを制作しています。
パンくずを生成するのにBreadcrumb-NavXTプラグインを使用しています。
パンくずは想定通り表示されているのですがarchive.phpですべての投稿を参照する際にエラーが表示されている状態です。

アーカイブに関するfunction.phpの記載としては

  1. カスタマイズを行っておりますがこちらコメントアウトしても同じエラーが表示されてます。
  2. 投稿はblogというスラッグでアーカイブを表示させてます。
  3. 投稿一覧のパーマリンクやリライトルールを変更しております。

※ソースコードは下記に記載しました。

プラグインの中身の該当のファイルで修正することでエラーは出なくなりました(最後に記入してます)が、プラグインの中身の修正は少し不安なので他に解決方法がありましたらご教授いただきたいです。
よろしくお願いいたします。

エラーメッセージ

デフォルトの投稿アーカイブページのみ下記のエラーが発生しています。

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というスラッグで固定ページを作成しました。

  1. 管理画面の設定>表示設定 からホームページの表示を固定ページを選択し、作成した固定ページに設定
  2. Breadcrumb NavXT 設定 から「ブログを示すパンくず」のチェックを外す

結果

1105行目のエラーは消えましたが809行目のエラーは残ったままという状態になりました。
ですが他プラグインのエラーも発生してしまい、この方法は断念しました。

試したこと②

プラグインの中身を修正しました。
bpost_post_archive_displayarrayの中にいないというエラーなので
class.bcn_breadcrumb_trail.php100行目に

php

1'bpost_post_archive_display' => true,

を追加しました。

結果

エラーは2つとも消えましたが

  1. この方法があっているのか
  2. プラグインの中身はそもそもいじるのはあまり良くないのではないか
  3. プラグインの中身をいじらず解決できるのなら解決したい

という懸念があるので、ご教授いただけたらと思います。

バージョン情報

PHPバージョン 8.0
MYSQLバージョン 5.7
WPバージョン 5.8

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問