ごけたです。
たまたまでも対応できれば素直に嬉しい。
目次
はじめに
今回は「Wordpress」編です。
「東京エクストリームウォーク50km」の記事を書いている途中で
プレビュー確認した際
タイトルと目次の間に今回のエラーが表示されました。
我流ですがエラー表示を非表示にしてみました。
ページ構成
画像、ソースコード、その下に説明文の構成になっています。
画像はクリックすると拡大されて表示されます。
リンクは予告なく削除の場合もございます。
Wordpressテーマは「simplicity2」
OSはWindows11、ブラウザーはchrome、
レンタルサーバーはエックスサーバーです。
表示されたエラーコード
「はじめに」でも書きましたが
「東京エクストリームウォーク50km」の記事を書いている途中で
プレビュー確認した際
タイトルと目次の間に今回のエラーが表示されました。
Undefined array key “host” in /home/サーバードメイン/ドメイン/public_html/wp-content/themes/simplicity2/lib/punycode.php on line 80
そのエラー表示が上記になります。
テーマ内の「punycode.php」の80行目がおかしい以外全く分かりません。
「Undefined array key」を検索する
そのエラー表示の意味が分からないので検索してみる。
はずは前半の「Undefined array key」
PHPエラーの一種
「Undefined array key」は
配列にて存在しないキー名を指定した際に発生するエラーです。
このエラーは警告エラー(Warning)に分類されています。
だそうです。
「punycode.php」を検索
次にエラー行数のもとになる「punycode.php」を検索すると
「simplicity2」製作者様の別サイトに説明がありました。
日本語ドメインを英数に変換とあります。
ただ当サイトのドメインは「0street-0times.com」で
日本語ではありません
上記の2つをまとめると
投稿文中に「配列にて存在しないキー名を指定した」から
「日本語ドメインを英数に変換」が上手くいかず
エラー表示されたってこと??
エラー元を探す
何が投稿文中になるからエラー表示される原因なのか
投稿文を1行づつ表示していきましたが今ひとつ理解できず。
実際のエラーコードを確認して見る
「public_html/wp-content/themes/simplicity2/lib/punycode.php on line 80」
「punycode.php」ファイルの80行目に
どんなコードが記載されているか確認してみる。
コードを見れば解決崎が分かる場合も。
コードを表示する
使用テーマ「simplicity2」
「lib」内の「punycode.php」の「80行目」を確認する。
ダッシュボードの飛騨英メニューから
「外観」→「テーマファイルエディタ」→右上の「テーマ表示」のプルダウンメニューをクリック
子テーマから親テーマを選択し「選択」ボタンをクリック。
テーマ内から「lib」を探しクリック。
「lib」内から「punycode.php」を探しクリック。
画面に「punycode.php」のコードが表示されます。
コードを確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | //Punycode変換ライブラリを読み込む include 'punycode-obj.php'; /////////////////////////////////////// //Punycode変換関数 /////////////////////////////////////// function convert_punycode($url, $is_encode = true){ $url_parts = parse_url($url); $Punycode = new Punycode(); if ( $is_encode ) { $host = $Punycode->encode($url_parts['host']); } else { $host = $Punycode->decode($url_parts['host']); ←ここが80行目 } $url_parts['host'] = $host; return http_build_url($url, $url_parts); |
「$host = $Punycode->decode($url_parts[‘host’]); 」
エラーの80行目を見ても全く不明です。
そもそもPHPはほぼ理解できません。
削除を試してみる 1
エラーの元になるもとを削除したらエラーが非表示なったことは
過去に何回かあるので
1 2 3 | else { $host = $Punycode->decode($url_parts['host']); ←ここが80行目 } |
「$host = $Punycode->decode($url_parts[‘host’]); 」を含め
前後の行をまるっと削除してみる。
削除したら一番下の「ファイルを更新」ボタンをクリック。
投稿画面に戻り、プレビューボタンでエラー表示を確認。
まだ表示されている。
削除を試してみる 2
1 2 3 4 5 | else { $host = $Punycode->decode($url_parts['host']); } $url_parts['host'] = $host; return http_build_url($url, $url_parts); |
さらに下の2行も追加して削除してみる。
削除したら一番下の「ファイルを更新」ボタンをクリック。
投稿画面に戻り、プレビューボタンでエラー表示を確認。
なんとエラー表示が非表示に。
実は8つほど他の記事にも表示されていましたが
今回の削除ですべて非表示に。
最終的に80行目があったコードは
1 2 3 4 5 6 7 8 9 10 11 12 13 | //Punycode変換ライブラリを読み込む include 'punycode-obj.php'; /////////////////////////////////////// //Punycode変換関数 /////////////////////////////////////// function convert_punycode($url, $is_encode = true){ $url_parts = parse_url($url); $Punycode = new Punycode(); if ( $is_encode ) { $host = $Punycode->encode($url_parts['host']); } } |
削除して残ったコードが上記のとおりです。
「’host’」と表示されたコードは1行だけになりました。
さいごに
今回の対応方法はあくまで我流です。
たまたま削除方法で非表示なった。が正しいです。
今後、Wordpressの更新、それに伴うテーマの更新。
PHPの更新、それに伴うテーマの更新。
これらが行われると、
その都度エラー表示が表示される可能性があります。
今回の削除方法で対応できるのかは不明になります。
最後までお付き合い下さいまして有難うございました。