初めての方は必ずお読みくださいは > ja.forums.wordpress.org/topic/13
FumitoMIZUNO様
コメントありがとうございます
申し訳ありません、慣れないもので失礼致しました
エラーメッセージですが
Parse error: syntax error, unexpected T_ENDIF in /www/a-mail/○○○.com/public_html/wordpress/wp-content/themes/twentytwelvechild/functions.php on line 10
というメッセージ?が出ています(勝手にエラーメッセージだと思っているのですが、もしかしたら違いますか?)
子テーマに先述のような関数をfunctions.phpに記述して設置するとこのメッセージ以外は真っ白になります。
entry-metaの関数のコピーする文の範囲を色々と変更してみているのですが、同じメッセージが出ております
お手数をお掛け致しますが、宜しくお願い致します。
コロンにするべきところがセミコロンか、全角になってしまっていないでしょうか。
コードは 逆クォート
で囲ってください。
digit@maetel様
アドバイスありがとうございます
申し訳ありません、初心者故によく理解できていないのですが
>コロンにするべきところがセミコロンか、全角になってしまっていないでしょうか。
この記述は親テーマからサクラエディタで開いたfunctions.phpのentry-metaの記述をそのままコピーしているのですが
本来コロンにするべき部分があるのでしょうか?
>コードは 逆クォート で囲ってください。
コードとはどこの部分からどこまでなのでしょうか?
初歩的以前のような質問で誠に恐縮ですが、ご教授いただけると幸いです
宜しくお願い致します。
そのentry-metaの貼り付けが 逆クォート で囲ってないので本来とは違う表示になってないか、と感じました。
エラーメッセージが指しているのは twentytwelvechild/functions.php の10行目ですので、
その部分を掲示してもらえますか、今件と関係があるのか無いのか、その部分が情報として欲しいです。
まず初めに、エラーの内容は「予期せぬT_ENDIF」というものです。
このT_ENDIFというのは、endif;
のことを指しています。
単なる解決としてはendif;
の1行を削除すれば解決するかと思います。
親テーマではif ( ! function_exists( 'twentytwelve_entry_meta' ) ) :
というように、最後にコロンがあったのではないでしょうか。このif():
とendif;
は対を成していて、この構文はPHPの基礎の部分なので、PHPの習得に興味があれば、 http://jp1.php.net/control-structures.alternative-syntax などの公式ドキュメントに目を通してみるといいかもしれません。
今はエラーメッセージを見ても意味不明で、もしかしたら単なる恐怖でしかないかもしれませんが、PHPを自在に使えるようになるにつれて、エラーメッセージから様々な情報が読み取れるようになります。
digit@maetel様
ありがとうございます、本当に助かります
メッセージの最後の部分は10行目という意味だったのですね
1<?php
2function twentytwelve_entry_meta() {
3$date = sprintf( ‘<time class=”entry-date updated” datetime=”%3$s”>%4$s</time>’,
4esc_url( get_permalink() ),
5esc_attr( get_the_time() ),
6esc_attr( get_the_date( ‘c’ ) ),
7esc_html( get_the_date() )
8);
9}
10endif;
11?>
なので10行目にあるのは『endif;』です
サクラエディタでも確認致しましたが間違いありませんでした
この関数はここまでかと思い、この部分までそのままコピーしてしまいましたが
やはり何か記述のしかたが間違っているのですね
何度もお手数をお掛け致しますがご教授お願い致します
宜しくお願い致します。
Daisuke Takahashi様
アドバイス本当にありがとうございます、endif;の1行を削除してみましたら
何とエラーせずにサイトが表示されました
これで問題解決と歓喜致しましたが・・・
ウエブマスターツールの構造化データのテストをみましたら残念ながら見事にupdatedとauthorのエラーが復活してしまいました
皆様のアドバイスのおかげで10行目を削除してfunctins.phpのエラーの対処はできましたが肝心の構造化エラーが対処できていない状態になってしまいました
先述の関数を子テーマに記述してもうまく動かないようです
子テーマのfunctions.phpを削除すると構造化エラーは消えます
という事は親テーマの先述の記述はきちんと動作しているようという事ですが、子テーマに記述しても動作しない???
折角解決と思ったのですが・・・
質問から質問で恐縮ですが、構造化エラーを対処する為の子テーマのfunctions.phpの記述の間違いをご指摘いただけると助かります、もう少しお知恵を拝借できれば幸いです、宜しくお願い致します。
そのエラーの原因ですが
sprintf()
というのは第1引数で指定したパターンに値を代入した結果を”返す”関数なので出力はされません。
- 親テーマ側で
function_exists()
を使用して、小テーマで同名の関数が定義されていた場合、再定義しないようにしていますから、親テーマのtwentytwelve_entry_meta()
の内容は一切実行されません。
解決としては
printf()
はsprintf()
と異なり、結果を”出力”します。
- 親テーマの
twentytwelve_entry_meta()
の内容も併せて記述します。
ここで、自分がすべてのコードを書いてしまったら何の意味もないので、概要だけですがこちらに挙げておきますので、PHPの公式ドキュメントなどを自力で調べてみて、それでもわからなければ見てみてください。
Daisuke Takahashi様
またアドバイスをいただいた皆様
沢山のアドバイス・ヒントをいただき本当にありがとうございます
今日はまだ未解決です、また折角いただいたアドバイスも
正直なところ全て理解できているとは言い難い状態ですが
Daisuke Takahashi様の仰っている意味は何となく理解できました
後は自力で調べてやってみます
必ず何とか対処して、このトピックスで『無事解決』の報告致します
何度も何度も本当にありがとうございました、少し時間が掛かるかもしれませんが
必ず報告させていただきます。
jtecnicさん、はじめのうちは「ググれ!」といわれても検索窓に何を打っていいのかがわからなかったりすると思いますが、ぜひ頑張ってください!
Daisuke Takahashi様
アドバイスをいただいた皆様
お陰様で何とか『無事解決』致しました
(子テーマにfunctinos.phpを設置してもサイトは正常表示され、構造化エラーも全て消えましたので勝手に解決と思っております)
ありがとうございます!本当にありがとうございます!
特にDaisuke Takahashi様には感謝の言葉もありません、昨夜、眠い目を擦りながら
落ち着いてアドバイスいただいた内容を考えてみたところ、ヒントどころか答えが
全て書いてあったのですね、Daisuke Takahashi様の最後のアドバイスがなかったら私の頭では何日間ググっても何しても全く解らなかったと思います
本当にありがとうございました。
ここ数か月は構造化エラーに始まり、テーマのアップグレードによる再度の構造化エラー、カテゴリーを増設しスラッグ変更した事による404エラー、そして今回のfunctions.phpの対処とwordpressに悩まされ続けた日々でした
これでやっと熟睡できそうです(笑)
まだ実践テスト(twentytwelveのアップデート)はできていないので、完全解決しているかどうかは解りませんが、これでひとまず『解決』と判断する事に致しました
Daisuke Takahashi様
アドバイスをいただいた皆様
また何かありましたら是非アドバイスをいただけたら幸いです。
本当にありがとうございました。