Bizvektorのwarningエラー表示の解決方法

2019/02/24

web

t f B! P L


WORDPRESSのテーマの1つにBizvektorがあります。ビジネス用のテンプレートとして、とても使い勝手が良いテーマ(テンプレート)です。

ちなみに、Bizvektorのテーマ配給元は、
BizVektorに関して事実上今後のアップデートは終了いたしますので、できる限りLightningへの移行をよろしくお願いいたします。
https://bizvektor.com/info/bizvektor-v-1-12-0/
と告知していますので、今となっては古いテーマ(デザイン/テンプレート)となりつつありますが、lightningよりもギュッとコンパクトに詰まった感じのBizvektorのデザインを好む方も多いようで、まだ使い続ける方もいらっしゃるようですので、どなたかの役に立つかもしれないと思い、メモがてら下記しておきます。

warningの警告文が表示される件

Bizvektorを使っていると、サイトマップなどに以下のような警告文が表示されることがあります。
Warning: Invalid argument supplied for foreach() in /home/●●●●●/www/wp/wp-content/themes/biz-vektor/module_sitemap.php on line ●●●
いろいろ調べていたら、パンくずリストにも表示されることがあるようで、
  1. BizVektor を使用している。
  2. カテゴリーが設定されていない記事を表示する。
  3. php.ini の設定が display_errors = On になっている。
    https://uonuma.biz/bizvektor-のパンくずリストに警告メッセージエラーが/
などを指摘するページも散見しました。

"wp-content/themes/biz-vektor/module_sitemap.php" などで検索すると、エラーメッセージ表示が放置され続けているサイトを何件か確認できます。 おそらく、サイトオーナーが、

  • サイトマップにエラーメッセージが表示されていることに気付いていない
  • エラーメッセージ表示には気づいているが、消しかたがわからない

・・・のいずれかなのかと思われます。

Bizvektorのフォーラムでも同じ質問(エラーメッセージの消し方を問う質問)が複数ありましたが、いずれも決定的な解決法はなされていませんでした。

Bizvektor固有の問題ではない

実はこれ、Bizvektor固有の問題ではなく、上記引用ページにもあるように、WORDPRESSで「php.ini の設定が display_errors = On になっている」時などに発生するエラーメッセージのようです。 Bizvektorにおいては、

  • カスタム投稿タイプを新設して投稿する(→サイトマップにエラー表示)
  • カテゴリーを設定しない記事を投稿する(→パンくずリストにエラー表示)

時などに発生するようです。
今回使用したホスティングサービス、さくらインターネットは display_errors = On が標準設定になっているみたいです。
という記述もヒントになるかもしれません。(つまり、レンタルサーバーをさくらインターネットにして、WORDPRESSを導入している人に起こりやすいケース。)

解決方法を探す

そこでその解決方法を検索していろいろなサイトを見たところ、

php に(array)を付け足せば解決する
foreach ((array)$array as $elem) {
}
とあったので、(array)付加を何パターンかやってみましたが、自分の場合、機能しませんでした(サイトマップからエラーメッセージは消えることはありませんでした)。 こちらも素人なので、phpに関してはチンプンカンプンなところもあり、あまりfunction.phpとかはいじりたくないというのが本音でもあります。

ド素人でもできた簡単な解決法

さらにいろいろ調べていたら、.htaccess に一行を書き込めば解決することがわかりました。

.htaccessに指定することもできます。
エラー出力をしない
php_flag display_errors off

参考:【PHP】PHPのエラー表示をなくす方法
https://www.webdlab.com/labs/php-display_errors/

.htaccess だとプラグイン経由でいじれるので、素人にもハードルが低く助かります。

.htaccessをいじれるプラグインはたくさんありますが、自分の場合、All in One SEO Pack のプラグインをすでにインストールしていたので、

All in One SEO Pack > 機能管理 >ファイルエディター(.htaccessをいじれる)

をActivate(有効化)して、その.htaccess の空欄のところに、

php_flag display_errors off

の一行を追記したら、サイトマップからのエラーメッセージを無事、消すことができました。

【WORDPRESSの編集画面/All in One SEO Pack/ファイルエディター/.htaccessの記述】


尚、All in One SEO Pack とBizvektorは、機能が重複している部分がある(例:metaディスクリプションが重複して出力される等)ので、BizvektorでAll in One SEO Packプラグインを使う場合は、一部機能を、どちらかのみを有効にする(どちらかを無効にする)などの調整が必要な場合がありますので、注意が必要です。
その辺りは以下のページが大変参考になります。
BizVektorとAll in One SEO Packの共存問題【2018年版】
https://www.nishi2002.com/26919.html

以上、同じ問題で苦しむどなたかの参考になれば幸いです。

QooQ