サポート » 使い方全般 » ユーザーの投稿数でランキング表示したい

  • 解決済 dada3

    (@dada3)


    はじめまして。
    複数の投稿者がいるブログを運営しています。
    (マルチサイト機能は使用していません)

    以下の機能を実装したいのですが、プラグインやカスタマイズ方法を検索しても
    それらしい方法が見つからず、困っています。

    ・投稿数の上位5件をsidebar.phpに表示
    ・ユーザー名を表示
    ・投稿件数を表示
    ・author.phpへのリンク
    ・authorのアバターを表示

    Bainternet User Ranksというプラグインが、それに近い動作を実現出来るようなのですが
    日本語で紹介されているページが少なく、インストールしてもうまく動作しませんでした。

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

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • ブログ記事は投稿(post)を使っているという前提です。

    <?php
    $args = array(
        'orderby' => 'post_count',
        'order'   => 'DESC',
    );
    $users = get_users($args);
    if (!empty($users)) :
        echo '<ul>';
        foreach ($users as $user) :
            $my_posts = get_posts('author='.$user->ID);
            $n = count($my_posts);
    ?>
            <li>
                <?php echo get_avatar( $user->ID, $size = '60'); ?>
                <a href="<?php echo get_author_posts_url( $user->ID); ?>"><?php echo esc_html($user->display_name); ?></a>(<?php echo $n; ?>)
                <div class = "clear-left"></div>
            </li>
    <?php
        endforeach;
        echo '</ul>';
    endif;
    ?>

    $my_posts = get_posts(‘author=’.$user->ID);
    ↓ ↓ ↓ ↓
    $my_posts = get_posts(‘numberposts=-1&author=’.$user->ID);
    あんまり良い方法ではない気がしてきました。

    投稿数を取得する便利な関数がありました。

    $my_posts = get_posts('author='.$user->ID);
    $n = count($my_posts);
        ↓↓↓↓
    $n = get_usernumposts($user->ID);

    有難うございます!思っていた動作を実現出来ました!
    色々検索していたのですが、方法が見つからなかったので本当に助かりました!
    あと、可能であれば、このリストから管理者を除外する方法があったら教えていただけますでしょうか?
    どうぞよろしくお願いいたします。

    get_users() のパラメータに以下を追加します。

    'exclude' => array(1),

    管理者が複数なら、複数のユーザーID を並べます。

    'exclude' => array(1,10,11),

    とか。ということが、
    http://codex.wordpress.org/Function_Reference/get_users
    に書かれています。確認はしていません。

    また、

    $n = get_usernumposts($user->ID);

    は非推奨になっていたので、

    $n = count_user_posts($user->ID);

    としてください。

    上位5件なら

    'number' => 5,

    も引数に追加すれば良いかも・

    phpの使い方から調べたので、お返事に時間がかかりましたが、教えていただいた内容で
    全て実現出来ました!
    有難うございました!

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「ユーザーの投稿数でランキング表示したい」には新たに返信することはできません。