レンタルサーバーのPHPバージョンアップで発生したワードプレスのエラー「Warning: Declaration of description_walker::start_el」を検索で修正した件


いやはや、自分で考える力を放棄してはダメなんだなと再確認した一件でした。

結構前から編集をお手伝いしている会社さん。
ワードプレスをご利用してWEB公開されているのですが「レンタルサーバーのバージョンアップが終わったら、サイトのトップにエラーが出たので助けて」と救援メッセージが来た。

そのサイトは、有料で購入したワードプレステンプレートを使っていたので、エラーメッセージを見て「wp-content/themes/xxx/functions.php on line 0X」あ~・・・・テンプレートのfunctions.php何十行目にエラーか・・・じゃ、販売元にメールで対応してもらえばいいんじゃね?と、購入履歴を元にフォームから問い合わせをかけた。

しかし、4日経っても返事なし・・・
ふざけた会社だなと、会社概要見ると「電話では対応しません、エラーが出ている情報が確認できない場合は連絡しません」とか強気。

ふへぇ~・・・・土地柄なのかね?と思って、再度、エラーが出ている状態にして修正の問い合わせをかけた。
土日挟んだけど、全く連絡無いので「ウッハ、自分で会社の評判落とすんかい?!」と無言のツッコミを入れて独自対応することにした。

で、今回のレンタルサーバーは、機能強化とか言っていたけど、PHPのバージョンも最新の7.2.6になっていた。

「あ、このへんかな?」とエラーメッセージの「Warning: Declaration of description_walker::start_el(&$output, $item, $depth, $args) 」で検索をかけたら一発で解決方法のサイトさんが出てきた。

サーバーのPHPを7.0にアップしたらWordPressでエラーが出た時の対処方

WEB制作会社さんの企業ページ内のブログ部分でしたが、非常に的確な解決方法でした。
・PHPのバージョンが上がった
・新しい変数に対応する必要がある
・正しい記述はこちら

のような説明で一発回答だった。素晴らしい。

エラーの表示はこんな感じで出ていた。
Warning: Declaration of description_walker::start_el(&$output, $item, $depth, $args) should be compatible with Walker_Nav_Menu::start_el(&$output, $item, $depth = 0, $args = Array, $id = 0) in /home/xxx/xxx.com/public_html/xxx/wp-content/themes/xxx/functions.php on line 0X

ワードプレステーマのfunctions.phpにある「start_el」を探して「&$output, $item, $depth, $args」を「&$output, $item, $depth = 0, $args = Array, $id = 0」に変更した。

——————————————————————
class description_walker extends Walker_Nav_Menu
{
function start_el(&$output, $item, $depth, $args)
{
global $wp_query;
$indent = ( $depth ) ? str_repeat( “t”, $depth ) : ”;
——————————————————————
↑コレを↓コウした
class description_walker extends Walker_Nav_Menu
{
function start_el(&$output, $item, $depth = 0, $args = array(), $id = 0)
{
global $wp_query;
$indent = ( $depth ) ? str_repeat( “t”, $depth ) : ”;

PHPを上書きしたらエラーが消えた。

まあ、やり終えて思ったのは、ちゃんとエラーメッセージ見ておけば連絡しなくて済んだな・・・って感じです。
以前、自分のLOTO7予想ゲームでも、PHPのバージョンアップで変数が使えなくなって修正した事がありました。
今回、他人が作った有料テンプレートだからと、販売元にスルーパスして修正を遅らせてしまったのは私のパスミスだったと反省した一件でした。
次から頑張る・・・