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

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

ただいまの
回答率

91.06%

  • PHP

    17240questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    5753questions

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

Yoast seoのアップデートでPHPエラー

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 159

yukiko

score 29

Yoast seoを6.0にアップデートしたら、phpのエラーが出るようになりました。

(一部伏字)
Undefined offset: 1 in /home/xxx/www/xxx/wp-content/plugins/wordpress-seo/admin/class-admin-asset-manager.php on line 69

ソース的にエラーが出る箇所は下記です。

    /**
     * Calls the functions that register scripts and styles with the scripts and styles to be registered as arguments.
     */
    public function register_assets() {
        $locale = get_locale();
        list( $language, $territory ) = explode( '_', $locale );

        wp_register_script(
            self::PREFIX . 'intl-polyfill',
            sprintf( 'https://cdn.polyfill.io/v2/polyfill.min.js?features=Intl.~locale.%s', $language ),
            array(),
            WPSEO_VERSION
        );

        $this->register_scripts( $this->scripts_to_be_registered() );
        $this->register_styles( $this->styles_to_be_registered() );
    }

「list( $language, $territory ) = explode( '_', $locale );」この行です。

プラグインを停止すればphpエラーは消えるのですが、停止すると投稿ページのコンテンツの中身が表示されなくなってしまいました。(いわゆるheader.phpやfooter.phpなどの枠組み的なものは表示されますが、ビジュアルモードやテキストモードで入力した部分が表示されません。)

仕方がないので、5.0にバージョンを戻して入れなおしたところ、元に戻りましたが、なぜこうなるのかがわかりません。

皆様のところではこのような現象は出ていないでしょうか。

また、最新を入れるためにこうすればいいよ等の情報がありますでしょうか。

【情報追加】
https://wp-doctor.jp/blog/2017/10/19/wordpress-sakura%E3%81%95%E3%81%8F%E3%82%89%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%A7%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%AE%E6%9B%B4%E6%96%B0%E5%BE%8C/
上記のページを見て、PHPのバージョンかなと思ったのですが、レンタルサーバはさくらで、PHP 7.1 [標準のPHP] (CGI版) で運用しています。なので、PHPのバージョンが原因ではないと考えています。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+2

GitHub(https://github.com/Yoast/wordpress-seo/)の issue を探してみたら、すでに登録がありました。

issue に登録された内容は、すでに修正されて、commit されているようですので、次回のリリースでは治っている可能性が高いと思われます。

以下にソースの修正内容がありますから、ソースを書き換えてみて、不具合が治っているか確認したらどうでしょうか?

get language using WPSEO_Utils 参照。


WordPress 4.9.1 + Twenty Seventeen + プラグイン8点入りのテストサイトに入れてみましたけど、書かれているような不具合はでていないです。(Web サーバの Locale は、C にしているからかなぁ...)

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/28 15:17

    上記、get language using WPSEO_Utils を参考に修正してみようと再度アップデートしたところ、既にPHPエラーは出ませんでした。
    ほんの少しの時間差だったようです。助かりました。ありがとうございました。

    キャンセル

  • 2017/12/28 15:22

    インストールしたファイルの更新日は、調べなかったな... 配布されている版が、修正されていたのですね。

    キャンセル

+1

状態は未解決ですが同じ内容かと思います。
https://wordpress.org/support/topic/updated-yoast-seo-wordpress-now-displays-errors/

WordpRessが最新でなければ最新に更新してみて、と書いてあります。

追記
↑は無意味ですね。

ちょっと見てみましたがNoticeなので大した問題ではないかと思います。
通常はデバッグモードにしていないと表示されませんが、常にデバッグモードにしているのでしょうか?
原因は$territoryの中身が空だからです。
例えばWordPressの言語設定が英語の場合はen_USとなり$territoryの中にUSが入るのでエラーになりませんが
日本語だとja_JPではなくjaなので$territoryが空になってしまいエラーになります。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/28 15:12

    ご回答ありがとうございます。
    WORDPRESSは最新の4.9.1なので、多分大丈夫ではないかなあと思います。

    キャンセル

  • 2017/12/28 15:23

    デバッグモード…すみません。今調べました。確かにデバッグモードになっていました。
    先にCHERRYさんの回答を見て、確かめてしまったので、今回はあちらにベストアンサーを差し上げたいと思います。
    ありがとうございました。

    キャンセル

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

  • ただいまの回答率 91.06%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • PHP

    17240questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    5753questions

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