サポート » 使い方全般 » 「BlankSlate」テーマにてエラーが表示される

  • 解決済 umc07

    (@umc07)


    お世話になっております。
    WordPress初心者です。
    サイトをレスポンシブデザイン化したくて
    http://blog.yukarien.com/tech/wp-responsive/
    こちらのサイトを見ながら試しているのですが、「BlankSlate」テーマにしたところ

    Only variables should be passed by reference~とエラーが表示されてしまいます。

    エラー部分は

    function blankslate_custom_pings( $comment )
    {
    $GLOBALS['comment'] = $comment;
    ?>
    <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>"><?php echo comment_author_link(); ?></li>
    <?php 
    }
    add_filter( 'get_comments_number', 'blankslate_comments_number' );
    function blankslate_comments_number( $count )
    {
    if ( !is_admin() ) {
    global $id;
    $comments_by_type = &separate_comments( get_comments( 'status=approve&post_id=' . $id ) );
    return count( $comments_by_type['comment'] );
    } else {
    return $count;
    }
    }


    $comments_by_type = &separate_comments( get_comments( 'status=approve&post_id=' . $id ) );
    とあるのですが、どこをどのように変えればいいのか分かりません。
    どうか解決策をご教示ください。
    宜しくお願い致します。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • CG

    (@du-bist-der-lenz)

    PHPでは参照渡しを要求するメソッドに値を直接渡して呼び出すと、エラーを吐くので、一旦渡す値を変数に格納する必要がある。

    こんにちは

    separate_comments関数の定義は以下の通りです。

    function separate_comments(&$comments) {

    引数の$commentsの前に&が付いていますが、これは引数のメモリアドレスへの参照が渡されることを意味します(参照渡し)。
    phpでは、参照渡しの引数には変数のアドレスへの参照が渡されることになっているため、引数が変数でないと関数が処理することができません。

    ですので、以下のように修正してください。

    $comments = get_comments( 'status=approve&post_id=' . $id );
    $comments_by_type = &separate_comments( $comments );
    

    separate_comments関数呼び出しの前の&は不要な気がしますが、どうでしょうか。

    Honda

    (@rocketmartue)

    「BlankSlate」テーマをインストールして有効化してみましたが、何もエラーは表示されません。
    公式に上がっているテーマですので、通常はテーマ変更しただけでエラーが出ることはありません。

    テーマに何か手を加えていますか?
    プラグインが干渉している場合もあります。

    エラーが表示された場合、「XX のようなエラー」ではなく、なるべくエラー文をコピーしてそのまま貼り付けてください

    問題解決のためのチェックリストを参考にして、もう少し必要な情報を追記してみてください。

    Rocket Martueさん

    Only variables should be passed by referenceはphp7からE_STRICTからE_NOTICEに変更になりました。
    php7環境ではdefine('WP_DEBUG', true);にしていると表示されます。

    トピック投稿者 umc07

    (@umc07)

    お返事が遅くなってしまい申し訳ありません。
    CGさん、munyaguさん、Rocket Martueさん、回答頂きましてありがとうございます。
    munyaguさんから教えて頂いたように修正したところエラー表示がなくなりました!
    ご丁寧に教えて頂きまして本当にありがとうございました。

    CG

    (@du-bist-der-lenz)

    現在のサイトをリキッドデザイン化したかったわけでなければ、Bootstrapで作成されているテーマを使うのが簡潔ではなかったでしょうか。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「「BlankSlate」テーマにてエラーが表示される」には新たに返信することはできません。