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

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

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

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

PHP

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

Q&A

解決済

2回答

327閲覧

コード入力エラーが起きました

funny-face

総合スコア13

WordPress

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

PHP

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

0グッド

0クリップ

投稿2018/11/16 11:12

編集2018/11/16 11:22

前提・実現したいこと

WordPressで記事修正した際に、更新日を変更しない設定を取り入れようとしていました。あるサイトから目的のコードが見つかり、それをfunctions.phpにコピペした時に以下のエラーが発生しました。

発生している問題・エラーメッセージ

wp-content/themes/jstork_custom/functions.php ファイルがエラーのため、PHP コードの変更をロールバックしました。修正し、もう一度保存してください。 syntax error, unexpected '$level' (T_VARIABLE)

該当のソースコード

//管理画面が開いたときに実行 add_action( 'admin_menu', 'add_update_level_custom_box' ); //更新ボタンが押されたときに実行 add_action( 'save_post', 'save_custom_field_postdata' ); //カスタムフィールドを投稿画面に追加 function add_update_level_custom_box() { //ページ編集画面にカスタムメタボックスを追加 add_meta_box( 'update_level', '更新日の変更', 'html_update_level_custom_box', 'post', 'side', 'high' ); } //投稿画面に表示するフォームのHTMLソース function html_update_level_custom_box() { $post = isset($_GET['post']) ? $_GET['post'] :null; $update_level = get_post_meta( $post, 'update_level' ); $level = $update_level ? $update_level[0] : null; echo '<div style="padding-top: 3px; overflow: hidden;">'; echo '<div style="width: 100px; float: left;"><input name="update_level" type="radio" value="high" '; if( $level=="" || $level=="high" ) echo ' checked="checked"'; echo ' />更新する</div><div><input name="update_level" type="radio" value="low" '; if( $level=="low" ) echo ' checked="checked"'; echo '/>更新しない<br /></div>'; echo '<p class="howto" style="margin-top:1em;">更新日時を変更するかどうかを設定します。誤字修正などで更新日を変更したくない場合は「変更しない」にチェックを入れてください。</p>'; echo '</div>'; } //設定したカスタムフィールドの値をDBに書き込む記述 function save_custom_field_postdata( $post_id ) { $mydata = isset($_POST['update_level']) ? $_POST['update_level'] : null; if( "" == get_post_meta( $post_id, 'update_level' )) { /* update_levelというキーでデータが保存されていなかった場合、新しく保存 */ add_post_meta( $post_id, 'update_level', $mydata, true ) ; } elseif( $mydata != get_post_meta( $post_id, 'update_level' )) { /* update_levelというキーのデータと、現在のデータが不一致の場合、更新 */ update_post_meta( $post_id, 'update_level', $mydata ) ; } elseif( "" == $mydata ) { /* 現在のデータが無い場合、update_levelというキーの値を削除 */ delete_post_meta( $post_id, 'update_level' ) ; } } //「更新」以外は更新日時を変更しない add_filter( 'wp_insert_post_data', 'my_insert_post_data', 10, 2 ); function my_insert_post_data( $data, $postarr ){ $mydata = isset($_POST['update_level']) ? $_POST['update_level'] : null; if( $mydata == "low" ){ unset( $data["post_modified"] ); unset( $data["post_modified_gmt"] ); } return $data; }

試したこと

私は全くの初心者でサイトにはコピペするだけでo.kと書かれていたので、その通り実行しましたがエラーとなってしまいました。ご教示いただきますようお願いいたします。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

LouiS0616

2018/11/16 11:14

質問を編集し、WordPressやphpのタグを付けると回答が付きやすいかと思います。
funny-face

2018/11/16 11:35

LouiS0616さんご指摘ありがとうございます。修正しました。
m.ts10806

2018/11/16 12:19

jstork_custom/functions.php line XX のように「どのファイルの何行目」をさすような文言はエラーメッセージにありませんか?
akirafudo6

2018/11/16 12:23

'$level' (T_VARIABLE) が文法エラーと書いてるけど、でているソースにはそのようなところないね?
funny-face

2018/11/16 13:25

mts10806さんご覧頂いてありがとうございます。mts10806さんがおっしゃる通り15行目wp-content/themes/jstork_custom/functions.php ファイルの15行目のエラーのためと書いてありました。15行目のコードはこちらです。 $level = $update_level ? $update_level[0] : null; echo '<div style="padding-top: 3px; overflow: hidden;">'; echo '<div style="width: 100px; float: left;"><input name="update_level" type="radio" value="high" '; if( $level=="" || $level=="high" ) echo ' checked="checked"'; echo ' />更新する</div><div><input name="update_level" type="radio" value="low" '; if( $level=="low" ) echo ' checked="checked"'; echo '/>更新しない<br /></div>'; echo '<p class="howto" style="margin-top:1em;">更新日時を変更するかどうかを設定します。誤字修正などで更新日を変更したくない場合は「変更しない」にチェックを入れてください。</p>'; echo '</div>';}
m.ts10806

2018/11/16 13:27

こちらのコメント欄では改行が使えませんし、マークダウンも使えませんので質問を編集してご対応ください。
funny-face

2018/11/16 13:29

akirafudo6さんご覧頂いてありがとうございます。文法エラーと書いてあるんですね。勉強になりました。ありがとうございます。
m.ts10806

2018/11/16 13:32

そのエラーの手前で var_dump($update_level); と書いて実行した結果を質問本文に追記してください。
m.ts10806

2018/11/16 13:32

あと、利用しているWordPressのバージョンとPHPのバージョンも追記してください
m.ts10806

2018/11/16 13:35

ただすでにコメントが出ている通り、質問に提示されているコードそのままでは当該エラーは発生しません。変数の定義でよく発生するエラーなのですが、特にそのあたりミスなどは見つかりませんし、構文チェッカーにかけても問題ないようです。コードを転記ミスしていたりしませんか?実は全角空白などが入っているが、転記の際に抜いてしまっていたり
m.ts10806

2018/11/16 13:36

コピペしてきたサイトのURLを提示されたほうが真偽確認がとれるかもしれません
funny-face

2018/11/16 13:37

mts10806さんわかりました。何せずぶの素人なのんですから、こちらの使い方もイマイチ分かっていない状態です。ご指摘ありがとうございます。
m.ts10806

2018/11/16 13:41

素人とか初心者とかあまり連呼しないほうがいいかもしれません。そうしなくていいように質問に初心者アイコンがつけられるので。問題の解決にだけ集中しましょう。使い方など気になるのであればヘルプページをザッと読んでも良いかと思います。
m.ts10806

2018/11/16 13:55

質問本文に追記いただければと。こちらのコメント欄はデフォルト非表示で目につきにくくなり、情報が散乱すると回答も得られにくくなります。
m.ts10806

2018/11/16 14:06

(WordPress・PHPのバージョン、あと使ってるサーバーの名前やプランなども併せてお願いしますね)
guest

回答2

0

ベストアンサー

質問編集はお願いするとして、
先だって参考にされたという記事を確認してみましたが、インデントが若干気になるものの、当該エラーは発生しませんね・・・。
利用した構文チェックツール:https://jp.piliapp.com/php-syntax-check/

元ファイルのバックアップはとられていますか?
ひとまず元に戻して、その後、もう1度チャレンジされてはどうでしょうか。

投稿2018/11/16 13:59

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

funny-face

2018/11/16 14:41

元ファイルのバックアップはとっています。再度チャレンジしてみます。色々ありがとうございました。
funny-face

2018/11/19 08:50

後日、バックアップを復元してもう一度チャレンジしたらうまくいきました。ありがとうございました。
m.ts10806

2018/11/19 08:53

解決されたようで何よりです
guest

0

PHPのバージョンじゃないでしょうか?
PHP7.1のサーバーで、ソースコードを貼り付けてみましたがエラーは発生してません。

投稿2018/11/16 12:58

dousojin

総合スコア754

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

funny-face

2018/11/16 13:44

dousojinさんご回答ありがとうございます。せっかくご指摘頂いているのですが、私はどのように操作すれば良いか分かっていません。パソコンに関して素人ですので具体的にどうすれば良いか教えて頂けるとありがたいです。
dousojin

2018/11/16 14:14 編集

「パソコンに関して素人」なんて情報より「使ってるレンタルサーバー」の方が有益な情報です。有益な情報を提示してください。 「使っているレンタルサーバーのコントロールパネルにPHPのバージョンを設定する箇所がある」ハズです。(名が通っているレンタルサーバーならの条件がつきますが)
funny-face

2018/11/16 14:39

レンタルサーバーはエックスサーバーを使用しています。PHPのバージョンは7.2.6です。ワードプレスのバージョンは4.9.8です。
dousojin

2018/11/16 22:02

エックスサーバー/php7.1.2/twenty seventeenで、ダッシュボード>外観>テーマの編集>Twenty Seventeen: テーマのための関数 (functions.php) で貼り付けてみましたがエラーは発生しませんでした。(私が使用しているサーバーはまだphp7.2系が使用できないサーバーです)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問