← Desenvolvimento

[Wordpress] Top poster do mês

Lida 2128 vezes

Offline

ragnarock 
Membro
Mensagens 208 Gostos 1
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Tenth year Anniversary Nineth year Anniversary Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2

Boa tarde, estou a tentar listar o top de autores de um blog em wordpress (para o mês actual).

neste momento tenho o seguinte código:
(foi feito com base neste post http://wordpress.org/support/topic/top-authors#post-489916 )

Código: [Seleccione]
<?php function top_posters_this_month() {  

echo '<ul>';

$order 'postcount';
$limit '5';
$usersinfo $wpdb->get_results("SELECT $wpdb->users.ID as ID, COUNT(post_author) as postcount FROM $wpdb->users LEFT JOIN $wpdb->posts ON $wpdb->users.ID = $wpdb->posts.post_author WHERE post_type = 'post' GROUP BY post_author ORDER BY $order DESC LIMIT $limit");
foreach($usersinfo as $userinfo) : // start authors' profile "loop"
$user get_userdata($userinfo->ID);
$user->postcount $userinfo->postcount;

echo '<li><a href="' $user->user_url '">' $user->display_name '</a>' $user->postcount '<br /></li>';

endforeach; // end of authors' profile 'loop'

echo '</ul>';

?>

No entanto este código é para os top posters de sempre, e eu quero só os de um dado mês

Muito provavelmente basta mudar a clausula WHERE deste select para limitar pela data da tabela posts:
Código: [Seleccione]
SELECT $wpdb->users.ID as ID, COUNT(post_author) as postcount
FROM $wpdb->users LEFT JOIN $wpdb->posts ON $wpdb->users.ID = $wpdb->posts.post_author WHERE post_type = 'post'
GROUP BY post_author
ORDER BY $order DESC LIMIT $limit"

Mas não sei se essa tabela tem de facto data, nem se é mesmo isso que quero fazer...dado que pode afectar a contagem dos posts.

Alguém sabe como se faz isto?

Cumps.
Offline

ragnarock 
Membro
Mensagens 208 Gostos 1
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Tenth year Anniversary Nineth year Anniversary Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2

bump
Offline

Jeckerson 
Membro
Mensagens 34 Gostos 0
Feedback +1

Troféus totais: 22
Trófeus: (Ver todos)
Level 5 Level 4 Nineth year Anniversary Eighth year Anniversary Super Combination Combination Topic Starter Poll Voter Level 3 Level 2

em vez de
Código: (php) [Seleccione]
WHERE post_type = 'post'

Código: (php) [Seleccione]
//Y-m-d H:i:s
//Year-month-day Hour:minutes:seconds
WHERE post_type = 'post' AND post_date >= '2011-02-01 00:00:00' AND post_date <= '2011-03-01 00:00:00'

Parece que é assim

Offline

ragnarock 
Membro
Mensagens 208 Gostos 1
Feedback +1

Troféus totais: 27
Trófeus: (Ver todos)
Tenth year Anniversary Nineth year Anniversary Super Combination Combination Topic Starter Poll Voter Level 5 Level 4 Level 3 Level 2

confirmo que era isso :obrigado:, só hj é que meti mãos a obra.

Para quem quiser o mesmo acrescento que também usei post_status = 'publish' para só contar os posts publicados.

tive foi de meter o meu código directamente onde o queria usar, declarar esta função no functions.php e dps só chamar a função, não resultou cmg, não sei ao certo pk.