• 解決済 jtecnic

    (@jtecnic)


    wordpress初心者です、アドバイスをいただけると助かります
    twentytwelveで子テーマを作ってブログを作成しております、数か月前に構造化エラーに対応する為に親テーマのfunctions.phpのentry-metaの1文に”updated”を追記して対処致しました、無事エラーは無くなったのですが、その後twentytwelveのアップデートがあり追記が消えて元に戻ってしまいました、現在は再度記述してエラーは消えているのですが、今後のアップデートに備えて対策を模索致しております、色々と調べた結果、親テーマのfunctions.phpにif ( ! function_exists( ‘twentytwelve_entry_meta’ ) )という宣言がしてある関数は子テーマにfunctions.phpを設置してコピーしても大丈夫という記事を何件か見つけ、これなら私にもできそうだと思い、子テーマにfunctions.phpを設置してentry-metaの関数をコピーしてみたのですが記述の仕方が間違っているようで何度やっても画面にエラーがでてうまくいきません
    下記のように子テーマに修正した箇所だけをコピーしているのですが、その他にentry-metaの関数を全文?コピーしてみたりして試しているのですが
    やはりエラーしてしまいます

    <?php
    function twentytwelve_entry_meta() {
    $date = sprintf( ‘<time class=”entry-date updated” datetime=”%3$s”>%4$s</time>‘,
    esc_url( get_permalink() ),
    esc_attr( get_the_time() ),
    esc_attr( get_the_date( ‘c’ ) ),
    esc_html( get_the_date() )
    );
    }
    endif;
    ?>

    何か根本的に間違っているのでしょうか?
    もし記述が間違っているだけなら正しい記述の方法をご教授いただけると大変助かります
    お手数をお掛け致しますが宜しくお願い致します

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • エラーメッセージを書いてもらえますか?

    「初めての方は必ずお読みください」では、

    問題解決の質問には環境と再現方法を書いてください。また、エラーが表示されたらそのエラーをそのまま書き込んでください。

    となっています。

    初めての方は必ずお読みくださいは > ja.forums.wordpress.org/topic/13

    トピック投稿者 jtecnic

    (@jtecnic)

    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の関数のコピーする文の範囲を色々と変更してみているのですが、同じメッセージが出ております
    お手数をお掛け致しますが、宜しくお願い致します。

    コロンにするべきところがセミコロンか、全角になってしまっていないでしょうか。
    コードは 逆クォート で囲ってください。

    トピック投稿者 jtecnic

    (@jtecnic)

    digit@maetel様
    アドバイスありがとうございます

    申し訳ありません、初心者故によく理解できていないのですが
    >コロンにするべきところがセミコロンか、全角になってしまっていないでしょうか。
    この記述は親テーマからサクラエディタで開いたfunctions.phpのentry-metaの記述をそのままコピーしているのですが
    本来コロンにするべき部分があるのでしょうか?
    >コードは 逆クォート で囲ってください。
    コードとはどこの部分からどこまでなのでしょうか?

    初歩的以前のような質問で誠に恐縮ですが、ご教授いただけると幸いです
    宜しくお願い致します。

    そのentry-metaの貼り付けが 逆クォート で囲ってないので本来とは違う表示になってないか、と感じました。

    エラーメッセージが指しているのは twentytwelvechild/functions.php の10行目ですので、
    その部分を掲示してもらえますか、今件と関係があるのか無いのか、その部分が情報として欲しいです。

    モデレーター Daisuke Takahashi

    (@extendwings)

    まず初めに、エラーの内容は「予期せぬ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を自在に使えるようになるにつれて、エラーメッセージから様々な情報が読み取れるようになります。

    トピック投稿者 jtecnic

    (@jtecnic)

    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;』です
    サクラエディタでも確認致しましたが間違いありませんでした
    この関数はここまでかと思い、この部分までそのままコピーしてしまいましたが
    やはり何か記述のしかたが間違っているのですね
    何度もお手数をお掛け致しますがご教授お願い致します
    宜しくお願い致します。

    トピック投稿者 jtecnic

    (@jtecnic)

    Daisuke Takahashi様

    アドバイス本当にありがとうございます、endif;の1行を削除してみましたら
    何とエラーせずにサイトが表示されました
    これで問題解決と歓喜致しましたが・・・
    ウエブマスターツールの構造化データのテストをみましたら残念ながら見事にupdatedとauthorのエラーが復活してしまいました
    皆様のアドバイスのおかげで10行目を削除してfunctins.phpのエラーの対処はできましたが肝心の構造化エラーが対処できていない状態になってしまいました
    先述の関数を子テーマに記述してもうまく動かないようです
    子テーマのfunctions.phpを削除すると構造化エラーは消えます
    という事は親テーマの先述の記述はきちんと動作しているようという事ですが、子テーマに記述しても動作しない???
    折角解決と思ったのですが・・・
    質問から質問で恐縮ですが、構造化エラーを対処する為の子テーマのfunctions.phpの記述の間違いをご指摘いただけると助かります、もう少しお知恵を拝借できれば幸いです、宜しくお願い致します。

    モデレーター Daisuke Takahashi

    (@extendwings)

    そのエラーの原因ですが

    • sprintf()というのは第1引数で指定したパターンに値を代入した結果を”返す”関数なので出力はされません。
    • 親テーマ側でfunction_exists()を使用して、小テーマで同名の関数が定義されていた場合、再定義しないようにしていますから、親テーマのtwentytwelve_entry_meta()の内容は一切実行されません。

    解決としては

    • printf()sprintf()と異なり、結果を”出力”します。
    • 親テーマのtwentytwelve_entry_meta()の内容も併せて記述します。

    ここで、自分がすべてのコードを書いてしまったら何の意味もないので、概要だけですがこちらに挙げておきますので、PHPの公式ドキュメントなどを自力で調べてみて、それでもわからなければ見てみてください。

    トピック投稿者 jtecnic

    (@jtecnic)

    Daisuke Takahashi様

    またアドバイスをいただいた皆様
    沢山のアドバイス・ヒントをいただき本当にありがとうございます
    今日はまだ未解決です、また折角いただいたアドバイスも
    正直なところ全て理解できているとは言い難い状態ですが
    Daisuke Takahashi様の仰っている意味は何となく理解できました
    後は自力で調べてやってみます
    必ず何とか対処して、このトピックスで『無事解決』の報告致します

    何度も何度も本当にありがとうございました、少し時間が掛かるかもしれませんが
    必ず報告させていただきます。

    モデレーター Daisuke Takahashi

    (@extendwings)

    jtecnicさん、はじめのうちは「ググれ!」といわれても検索窓に何を打っていいのかがわからなかったりすると思いますが、ぜひ頑張ってください!

    トピック投稿者 jtecnic

    (@jtecnic)

    Daisuke Takahashi様
    アドバイスをいただいた皆様
    お陰様で何とか『無事解決』致しました
    (子テーマにfunctinos.phpを設置してもサイトは正常表示され、構造化エラーも全て消えましたので勝手に解決と思っております)
    ありがとうございます!本当にありがとうございます!

    特にDaisuke Takahashi様には感謝の言葉もありません、昨夜、眠い目を擦りながら
    落ち着いてアドバイスいただいた内容を考えてみたところ、ヒントどころか答えが
    全て書いてあったのですね、Daisuke Takahashi様の最後のアドバイスがなかったら私の頭では何日間ググっても何しても全く解らなかったと思います
    本当にありがとうございました。

    ここ数か月は構造化エラーに始まり、テーマのアップグレードによる再度の構造化エラー、カテゴリーを増設しスラッグ変更した事による404エラー、そして今回のfunctions.phpの対処とwordpressに悩まされ続けた日々でした
    これでやっと熟睡できそうです(笑)

    まだ実践テスト(twentytwelveのアップデート)はできていないので、完全解決しているかどうかは解りませんが、これでひとまず『解決』と判断する事に致しました

    Daisuke Takahashi様
    アドバイスをいただいた皆様
    また何かありましたら是非アドバイスをいただけたら幸いです。
    本当にありがとうございました。

13件の返信を表示中 - 1 - 13件目 (全13件中)
  • トピック「子テーマのfunctions.phpへの再定義の記述法について」には新たに返信することはできません。