CG
(@du-bist-der-lenz)
期待しているのは、教授ですよね。過去のトピックに、期間を絞って取得する、というものはなかったでしょうか。
$sixty_days_ago = date(‘Y-m-d 0:0:0’, strtotime(‘-60 day’));
どこが、どのようにうまくいってないのかわかりませんけど
-
この返信は6年、 5ヶ月前に
npsslが編集しました。
すみません、言葉が間違えていました。
全くの初心者なので、コードの書き方を教えてほしかったです。
申し訳ございません。
このコードで実行したところ
今までの全ての投稿の数でユーザーのランク付けされ
指定した期間内のランキングとして機能しませんでした。
期間の指定は無視されている状態です。
投稿数は、指定した期間内の数の表示ですが・・・
現在のコードを見やすくしてください。
コードタグで囲めばコードが読みやすくなります。
こんにちは
get_users() で投稿数(post_count)に対して期間を指定することは難しいと思います。
$wpdb->get_results() で SQL クエリを実行して取得する方がまだ簡単かなと思います。
例:
<?php
$three_month_ago = date( 'Y-m-d 00:00:00', strtotime( '-3 month' ) );
$sql = "SELECT *
FROM {$wpdb->users}
LEFT JOIN (SELECT post_author, COUNT(*) as post_count FROM {$wpdb->posts} WHERE (post_type = 'post' AND post_status = 'publish' AND post_date >= %s) GROUP BY post_author) p ON ({$wpdb->users}.ID = p.post_author)
WHERE post_count IS NOT NULL
ORDER BY post_count DESC LIMIT 0, %d";
$users = $wpdb->get_results( $wpdb->prepare( $sql, $three_month_ago, 5 ) );
if ( $users ) {
echo '<ul>';
foreach ( $users as $user ) :
$n = $user->post_count;
?>
<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>';
}
?>
失礼いたしました。
以下のコードです。お願いいたします。
<?php
$three_month_ago = date('Y-m-d 0:0:0', strtotime('-3 month'));
$args = array(
'orderby' => 'post_count',
'order' => 'DESC',
'number' => 10,
);
$users = get_users($args);
if (!empty($users)) :
echo '<ul>';
foreach ($users as $user) :
$my_posts = get_posts(array(
'numberposts'=>-1,
'author'=> $user->ID,
'date_query' => array(
array(
'after' => $three_month_ago, //3ヶ月
'inclusive' => true
),
))
);
$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;
?>
ishitaka さん
ありがとうございます!
望んでいた通りの表示が出来ました!
他の皆さんも、ありがとうございました。
CG
(@du-bist-der-lenz)
コードの書き方、ではなく書いて欲しかったんですね。つまずいていそうなところを気づけることを大切にしています。簡単な表現で、はっきり尋ねることが気遣いさせないので、望んでいた情報が得やすいですよ。