[Wordpress] Why do I get "PHP Parse error: syntax error, unexpected T_STRING in ... php on line ..." when clicking the update button in functions.php even though the code is correct? ?

【WordPress】コードは合っているのにfunctions.phpの更新ボタンをクリックすると「PHP Parse error: syntax error, unexpected T_STRING in…php on line...」が出るのは??

公開日:2018年5月3日 使い方など
Knowledge Base Wordpress パソコン カスタマイズ 設定

WordPressで何かをカスタマイズするときに通らなければならないのがテーマのfunctions.phpへの追記。一度失敗したことがある方なら分かると思いますが、このファイルはとっても重要で、間違ったコードなどを挿入するといきなり管理画面が真っ白、頭も真っ白になってしまう恐ろしいファイルです。

・・・といっても冷静にFTPなどでfunctions.phpをパソコンにダウンロードして間違ったものを削除したり修正したりして元の場所へ戻せば解決するのですが、頭が真っ白になってしまうと・・・って感じですよね??

幸いWordpressのバージョン4.9からこの状況を改善するプログラムが追加され、間違ったコードが入っている場合には更新されない(更新前にロールバックされる)ようになりました。これでひとまず真っ白現象は起きにくくなるので一安心なのですが・・・というのが今回の症状です。

行ったのはカスタムフィールドに入力した値を投稿一覧へ表示されるためのコードの追記

のページで紹介されているコードを使わせていただいたときのことです。

テーマのfunctions.phpへ挿入したコードは

//カラムを追加する
function my_columns($columns) {
    $columns['customfield'] = "カスタムフィールド";
    return $columns;
}
//カラムの表示内容を定義
//追加したカラムに「metaname」というカスタムフィールドの内容を表示させる
function add_column($column_name, $post_id) {
    if( $column_name == 'customfield' ) {
        $stitle = get_post_meta($post_id, 'metaname', true);
    }
    if ( isset($stitle) && $stitle ) {
        echo attribute_escape($stitle);
    } else {
        echo __('None');
    }
}
add_filter( 'manage_posts_columns', 'my_columns' );
add_action( 'manage_posts_custom_column', 'add_column', 10, 2 );
【注意】コードをコピーして使用する前に必ずお読みください

この記事内にコードが記載されている場合、コードはそのままコピー(いわゆるコピペ)してお使いいただいても構いませんが、以下の件にご留意ください。

使用については自己責任でお願いします

コードの確認は私の管理するサイト、またはテスト環境で問題が起こらなかったものですので、お使いの環境での動作等を保証するものではありません。

万が一このコードを使用してサイトに重篤なトラブルが生じても当サイト、当サイト管理者は一切責任を負いません

コードの変換エラーなどにより動作しない場合、更新エラーが出る場合があります

コードをそのままコピーしても問題なく使えるよう文字列変換を行った上で掲載しておりますが、希に変換できていない場合があり、コードエラーとなることがあります

その場合には以下の方法で修正を行ってみてください

  1. コードの中に全角の記号が入っていませんか?
  2. 半角にすることで解消できます
  3. コードの中に全角の空白(スペース)がありませんか?
  4. 半角にすることで解決できます
  5. コードは合っているはずなのに更新できないときは
  6. 特にエラーの出た行内に日本語での文字列が入っている場合には全角での文字列があるということでエラーになる場合があり、Wordpressのエディタチェックではこれを「’」や「)」など閉じ子のエラーとして認識され更新できないことがあります。エラーとして返される行の先頭に空白がある場合には空白をなくすことできちんと認識され更新されるようになることが多いです。
  7. 「何かが間違っています...」と表示され、更新できないときは
  8. このエラーは本当に何がエラーなのかをWordpressのチェックが判断できない場合に発生します。解決策としてはその画面を開き直すことなのですが、その際希に元のコードがすべて削除されてしまう場合がありますので、今表示されているコードを一旦どこかへコピーしてからページの再読み込みをするようにしてやり直します。
    ※このエラーは不明なエラーなので予期せぬ動きをする可能性がありますので特に慎重な対処が必要です
これらのエラー対処については以下のページが参考になるかも知れません

コードを転載する場合には

ご自身のサイトで当ページで紹介しているコードを転載される場合には当ページへのリンクを入れていただきますようお願いいたします

追加して、カスタムフィールド名を変更して更新。全く問題なく更新でき、投稿一覧を見たらきちんと「カスタムフィールド」という名前の列が追加され、そのフィールドに入力されている値が表示されました。

同じ目的のコードがいろいろなサイトで提供されていますけど、私にはコードの流れが一番分かりやすかったので使わせていただいたのですが・・最後に「カスタムフィールド」という列名を都合のいい名前に変更して更新したら、

PHP Parse error: syntax error, unexpected T_STRING in…php on line...

というエラーが発生して更新できない。何で~~???

このエラーが出る原因については

で同じような質問がされており、コードが間違っている可能性が指摘されていました。でも今回は「カスタムフィールド」という名前を別名にしただけ、断じてコードは間違ってないんです(動作確認もしましたからね)。

そして元の「カスタムフィールド」に戻してもエラーが消えないので、ちょっとイラついてエイヤーーーって何度か更新してたら今度は

何かが間違っているようです...

というエラーメッセージが出ました。これって・・・昔遭遇したような気が・・・そうです。便利になったと思われるコードの確認機能のバグというか不具合なんです。

試しにエラーが出た状態のfunctions.phpをダウンロードして名前を変更し、そのままアップロードしたら・・・正常に動作しました

でもサイト内のfunctions.phpの編集画面で再び他の文字列に変更すると・・・またまたエラー発生。

更にはこの「カスタムフィールド」という名前を半角英数字のもの「abc01」にしたらエラーは出ませんでした。

ここから推察できる結論はただ1つ、このエディタは日本語などのマルチバイト文字が苦手ということです。

すべてがこれに当てはまるわけではありませんが、コードが間違っていないと確信できるのであれば一度疑ってみてはどうでしょうか??

更新したりページ移動してはいけないときもある

今回はロールバック(エラーが出る前の状態)へ勝手に?戻ったときの内容なのですが、絶対にそのまま別ページへ移動してはいけないときがあります。それは、別ページ(ダッシュボードなど)へ移動しようとしたら警告画面が出たときです。

それでも移動する?留まる?という選択が出てくるので、大丈夫だろう・・・と移動すると、最悪の場合編集していた内容がすべて削除されてしまうことがあります。いろいろな警告メッセージがあるようですが、「致命的なエラーを回避するために送信に失敗しました」というのが出ることが多いです。ソースを更新するために今見えてる画面の内容をサーバー内へ送信できなかったということですからきちんと読めば納得の内容なのですが、ロールバックされるときのメッセージと同じでしょ!と勘違いすると大変なことになりますから注意してください。

もしも遭遇したら・・・

を参考に対処してみてくださいね。

ひまあーと(管理人)
  • 記事の作者: ひまあーと(管理人)

  • ☆最後までお読みいただきありがとうございました。記事作者のひまあーとです。
    ☆Wordpressでサイトをカスタマイズしていく上で有用な情報を配信しつつ、「ココナラ」でサイトカスタマイズのお手伝い、不具合の修復、サイト引っ越し代行などをさせていただいております。
    ☆Wordpressネタが多いですが、趣味の「園芸」「卓球」などの情報や日々の出来事などもどんどん増やしていきますのでよろしくお願いいたします。


いつでもご相談・サイトカスタマイズの依頼を受け付けています

Wordpressのカスタマイズ、不具合解消のご相談はすべてココナラのダイレクトメッセージからお受けしております。まずはこちらのバナーからお気軽にお問い合わせください。

※一度もココナラを使ったことがない方はココナラへの無料登録が必要です。こちらから登録後、上のリンクをクリックする、またはココナラトップページから「ひまあーと」を検索してお問い合わせください。


【スポンサーリンク】


記事の拡散にご協力をお願いします

閲覧いただきありがとうございました。役に立つ情報でしたら是非SNSでシェアをお願いします

関連情報