サポート » テーマ » function.php に書き込むと、サーバーエラーが起こる

  • テーマはTwnety Thireteenを使っています。

    アーカイブページの表示順をカスタムフィールドの数字で昇順にするために、以下のように記述したら、サーバーエラーになります。

    <?php 
    add_action( ‘wp_enqueue_scripts’, ‘theme_enqueue_styles’ );
    function theme_enqueue_styles()
    { wp_enqueue_style( ‘parent-style’, get_template_directory_uri() . ‘/style.css’ );
    } 
    
    <?php
    function test_pre_get_posts($query) {
    if ( is_admin() || ! $query->is_main_query() ) {
    return;
    }
    if ( $query->is_category() ) {
    $query->set( ‘meta_key’, ‘saraly’);
    $query->set( ‘orderby’, ‘meta_value_num’ );
    $query->set( ‘order’, ‘dese’ );
    }
    }
    add_action( ‘pre_get_posts’, ‘test_pre_get_posts’ );
    ?>

    初めのブロックの?>を削除していますが、削除しないと、投稿ページや固定ページを更新したらページが真っ白になってしまいます。

    解決方法をご存知の方がいらっしゃいましたら、教えていただけますでしょうか。

    よろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • 2番目の<?phpと末尾の?>を削除してください

    トピック投稿者 renahana

    (@renahana)

    サーバーエラーは解決いたしました。

    ありがとうございました。

    CG

    (@du-bist-der-lenz)

    <? ?>で囲われたグループが一つのプログラム命令と理解しましょう。このタグの間はPHPのプログラムで実行してくださいといっているんだ、との受け止めでいいでしょう。
    それでは最後に?>がいるんじゃないかと、htmlプログラムの理解では思いそうですが、プログラムはグルグル回るものですからね。

    末尾に?>があるのはPHPの文法としては間違いではありません。
    しかし、場合によってはそれがエラーの原因になるということです。

    functions.phpの末尾に?>があり、その後に改行やスペースがあると、WordPressがHTTPヘッダを送出する前にそのスペースなどを送出してしまい、意図しない動作になります。
    index.phpなどのテンプレートでは、すでにヘッダは送信済みであるため、末尾の?>の後に何が来ても問題になりません。

    このへんにちょっと難しそうな説明があります。
    http://itpro.nikkeibp.co.jp/article/COLUMN/20070307/264114/?ST=spleaf

    本か何かで少しphpの基礎を勉強されたらいろいろ効率よく作業できると思います。

    トピック投稿者 renahana

    (@renahana)

    Du bist der Lenz様
    munyagu様

    ご教示いただきありがとうございます。

    ネットにある情報を見よう見まねでやってきたのですが、やっと何を学べばいいのかわかりました。

    親切に教えていただき、感謝いたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「function.php に書き込むと、サーバーエラーが起こる」には新たに返信することはできません。