サポート » 使い方全般 » コメントの表示スクリプト

  • 解決済 shigebooo

    (@shigebooo)


    いつもお世話になっております。

    例えば、コメントが20件あり、初期状態では最新5件を表示し、下部に「全てのコメントを表示する」などのリンクボタンで全てを表示できるプラグインやスクリプトをご存知の方いらっしゃいませんか?

    もしくはちょちょいと組めちゃうというすごい方などいませんでしょうか?

15件の返信を表示中 - 1 - 15件目 (全15件中)
  • モデレーター mypacecreator

    (@mypacecreator)

    モデレーター mypacecreator

    (@mypacecreator)

    設定>ディスカッション設定 のことかな?

    mypacecreatorさん返信ありがとうございます。

    このコード知りませんでした・・・教えていただきありがとうございました。

    しかし、このコードでも、分割にして新しい順にすると後詰めになってしまい、例えば5件分割にして6件コメントがあると、最初の表示で1件、次のページで5件とかっこ悪い表示になってしまうので分割はしていませんでした。

    理想としては、データ的に全て取得しても良いので、最初に表示するのは新しい順で5件表示し、リンクボタンクリックなどで全件表示できようなイメージです。

    言葉では、コメントolのliを5件だけ表示するとか、6件目以降を非表示にしておくとか言えるのですが、自分の技量ではそんなシステムは組めないので、プラグインなどがないかなと質問させていただきました。

    今のところ、コメント要素の高さを5件分程の高さに指定して、スクロールで見れるようにするしかないかと考えています・・・この場合コメントの行数によっては見栄えが悪くなる可能性もありますが・・・

    他によい方法ありましたらアドバイスよろしくお願いします。

    「js リスト 表示件数」と検索したことろ、「newsPager.js」というスクリプトを発見しました。

    このスクリプトを導入したところ、新着順に頭詰めで5件づつ表示できるようになりました。

    もちろん「次の5件」「前の5件」とナビも出ます。

    理想とはわずかに違いますが今のところこれでヨシとします。

    他によいプラグイン、スクリプトありましたらアドバイスよろしくお願いします。

    スクリプト書いてみました:WordPress で Ajax:コメント取得編

    kzさんいつもご指導ありがとうございます。さっそく検証してみたいと思います!のですが・・・

    現在、コメントの表示は、comments.phpに

    <ol class="list_comments">
    <?php wp_list_comments('type=comment&callback=list_comments'); ?>
    </ol>

    funcrions.phpに、

    <?php function list_comments($comment, $args, $depth) {
    	$GLOBALS['comment'] = $comment;
    ?>
    <li <?php comment_class(); ?> id="comment-<?php comment_ID(); ?>">
    <div id="comment_id_<?php comment_ID(); ?>">
    なんちゃらかんちゃら
    </div>
    <?php } ?>

    として表示させているのですが、これを流用させることはできないのでしょうか?

    それと、カテゴリーごとにON・OFFさせることは可能でしょうか?
    ひとつのカテゴリーだけは最初から全表示にさせておきたいのです・・・

    この二つが叶えばまさにスーパーえびちゃん状態の満足度です!

    これを流用させることは

    <ol class="list_comments">
    <?php
    wp_list_comments( array(
      'type'=> 'comment',
      'callback' => 'list_comments',
      'walker' => new My_Walker_Comment,
    ) );
    ?>
    </ol>

    で OK◎

    カテゴリーごとにON・OFFさせること

    はしばし待たれよ! -> 更新しました WordPress で Ajax:コメント取得編

    kzさん素早い回答ありがとうございます。

    ということは、funcrions.phpも

    add_action( 'init', 'my_ajax' );
    function my_ajax() {
      if ( ! isset( $_POST['get_rest_of_comments'] ) )
        return;
    
      if ( 'XMLHttpRequest' == $_SERVER['HTTP_X_REQUESTED_WITH'] ) {
        @header('Content-Type: text/html; charset=' . get_option( 'blog_charset' ) );
    
        $post_id = (int) $_POST['post_id'];
    
        $GLOBALS['post'] = get_post( $post_id );
    
        $comments = get_comments( array(
          'post_id' => $post_id,
          'status' => 'approve',
          'order' => 'ASC',
        ) );
    
        wp_list_comments( array(
          'callback' => 'list_comments',
          'walker' => new My_Walker_Comment,
          'rest' => true,
          ), $comments );
      }
    
      exit();
    }

    と上記のように書き直した方がいいのですよね?

    あと、下部のスクリプト内の

    function(data) {
            $('#get-rest-of-comments').remove();
            $('#comments .commentlist').append(data);
          }

    $('#comments .commentlist').append(data);

    をいろいろいじってはみたのですが、どうしても最初の5件表示に+全件表示になってしまいます・・・他に書き換えないといけない所があるのでしょうか?

    #ブログに「カテゴリーによって全件表示」を追記しました。

    上記のように書き直した方がいいのですよね?

    です◎

    最初の5件表示に+全件表示

    1〜5件表示していてリンクをクリックすると、
    その後ろに6件目〜最後まで表示される、なら正解です。

    1〜5件表示していてリンクをクリックすると、
    その後ろに1件目〜最後まで表示される、なら謎です。。

    その後ろに1件目〜最後まで表示される

    です・・・

    ちなみに

    $('#comments .commentlist').append(data);

    はなんと書き換えるのが正解なのでしょうか?

    そこは、Ajax で帰ってきた値を表示してるだけなので書き換えません。

    wp_list_comments( array(
       'callback' => 'list_comments',
       'walker' => new My_Walker_Comment,
       'rest' => true,
     ), $comments );

    が1件目〜最後まで吐いているってことなので ‘rest’ パラメータが効いてないですね、ふむ。

    ※追記
    My_Walker_Comment クラスで

    if ( 0 == $per_page )
      $per_page = get_option( 'comments_per_page' );

    が抜けていました!修正しましたのでお試しください☆

    $('#comments .commentlist').append(data);

    を書き換えなければ、最初の5件表示のままで、ただリンクが消えるだけです。何も表示してくれません。

    $('.list_comments .comment').append(data);

    など書き換えると、5件表示に+1件目から最後まで表示されます。

    わたしも書き方が違っているのでしょうか・・・orz

    カテゴリー別のONOFFは機能しました。

    あ、コメント周りのマークアップがオリジナルでしたら
    それに合わせて、’#comments .commentlist’ は書き換えます。
    li タグの親の ul タグだか ol タグに付けたクラス名(ID名)までたどります。
    ‘.list_comments .comment’ でたどれてれば OK です。

    5件表示に+1件目から最後まで表示されます。

    は2個上のコメントに追記しましたー

    ちょっとうまく表示されません・・・

    頭をリセットして最新のコードで最初からやってみたいと思います。

    後ほどまたコメントいたします。

    kzさん何度も丁寧にありがとうございます。

    なかなかスーパーえびちゃんになれません・・・

    kzさんうまく表示できました!!

    $('.list_comments .comment').append(data);

    のところを、liまで辿らずに

    $('.list_comments').append(data);

    olのみの指定にしたところうまく表示されました。
    なぜかは私にはわかりませんが・・・

    liまで指定しまうと入れ子のような状態になってしまってました・・・

    今のところ何も問題はなく、まさに理想通りのスーパーえびちゃん状態です!!
    しばらく検証して問題なければ「解決済み」にしたいと思います。

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

    これからも宜しくお願いいたします。

15件の返信を表示中 - 1 - 15件目 (全15件中)
  • トピック「コメントの表示スクリプト」には新たに返信することはできません。