サポート » 使い方全般 » プラグインを使わずに人気記事を表示したい

  • サイドに人気記事を表示したいのですが、Popular PostsやPost Viewsを使ったのですが、カスタマイズ性に乏しく、デザインにそったコーディングが出来ません。
    そこでプラグインを使わずに人気記事を表示できるか相談させてください。
    調べると、以下のソースで実現できると知り試しましたが、日付が1970.01.01だったり、Hello worldの記事しか表示されません。

    <ul>
        <?php $result = $wpdb->get_results("SELECT comment_count,ID,post_title FROM $wpdb->posts ORDER BY comment_count DESC LIMIT 0 , 3");
        foreach ($result as $post) {
            setup_postdata($post);
            $postid = $post->ID;
            $title = $post->post_title;
            $commentcount = $post->comment_count;
            if ($commentcount != 0) { ?>
    
            <li>
                <h4>
                    <a href="<?php echo get_permalink($postid); ?>" title="<?php echo $title ?>">
                        <?php echo $title ?>
                    </a>
               </h4>
            </li>
        <?php } } ?>
    </ul>

    どなたか教えていただけないでしょうか?
    お願い致します。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • 素直に get_posts() を使った方が良いと思います。この場合、人気=コメントの多い順です。
    ★ functions.php

    function comments_rank_where( $where = '' ) {
      $where .= " AND comment_count > 0";
      return $where;
    }
    <?php
    global $post;
    $args = array(
      'orderby'          => 'comment_count',
      'order'            => 'DESC',
      'suppress_filters' => false,
      'numberposts'      => 3
    );
    add_filter( 'posts_where' , 'comments_rank_where' , 10 , 1 );
    $my_posts = get_posts( $args );
    remove_filter( 'posts_where', 'comments_rank_where' );
    if ($my_posts) :
      echo '<ul>'.PHP_EOL;
      foreach ($my_posts as $post) :
        setup_postdata($post);
        $commentcount = $post->comment_count;
    ?>
        <li><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a> <?php echo $commentcount; ?></li>
    <?php
      endforeach;
      wp_reset_postdata();
      echo '</ul>'.PHP_EOL;
    endif;
    ?>

    ※ Popular Posts や Post Views は、コメントの多さで人気を決めているのではないと思いますが・・。

    トピック投稿者 warusararusa

    (@warusararusa)

    pluto1234さん、ご返信ありがとうございます。
    今の書き方ですと人気=コメントとなりますね。すいません、他サイトからひっぱてきたソースになりますので、誤解が生じたかもしれません。

    出来れば、プラグインを使わずに、【アクセス数に応じた】人気記事を表示したいのですが、教えて頂けませんでしょうか。

    WordPressの基本機能ではページごとのアクセス数はカウントしていないので、single.phpに読み込まれる度にカスタムフィールドにアクセス数をカウントしていって、そのカスタムフィールドの数字順に取得とかどうでしょうか?
    ただしある期間中とかのアクセス数を取得とかアクセスカウントを一斉リセットとかの処理をさせるなら一気に面倒なりそうですが。

    *個人的にはプラグインの表示部分をカスタマイズしたほうがはやいんじゃないかなーと思いますが。

    http://ja.forums.wordpress.org/topic/5294?replies=6

    ここに、WP-PostViews でカウントアップした値(値はカスタムフィールド ‘views’ に保存される)を使って、ランキングする方法が載っています。

    WP-PostViews:カウントアップのために使用
    ランキング表示部:自由にカスタマイズ

    トピック投稿者 warusararusa

    (@warusararusa)

    gogowebさん
    ご返信ありがとうございます。カスタムフィールドの数字順で取得、なるほど。色々手段を考えたのですがやはりプラグインをカスタマイズして、出来る限りのことをやろうと思います。あらため、ご助言ありがとございました。

    pluti1234
    WP-PostViewsにそんな機能があるのですね。お調べいただき、ありがとうございます。WP-PostViewsのview保存を利用する仕組みを今からやってみます。それで今の私の実力で難しいようであれば、素直に諦め、プラグインを使った分かりやすいデザインに変えようと思います。本当にご助言ありがとうございました。

    既に解決しているようですが…

    Automattic社謹製のJetpackプラグインを使うとアクセスに応じた人気記事の表示が可能です。
    多機能なプラグイン機能の一つに統計情報があります。
    wordpress.comのアカウントが必要など手間はかかりますがいかがでしょう。

    Jetpackにはウイジェットで表示する機能しかありませんが、APIを使用することでカスタマイズが可能です。
    Popular posts by view with Jetpack

    Jetpack by WordPress.com

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「プラグインを使わずに人気記事を表示したい」には新たに返信することはできません。