Sur mon tableau de bord personnalisé, je souhaite afficher le nombre total de nouveaux commentaires (comme "maintenant"). Juste comme "Vous avez ... des commentaires ouverts à prendre en charge". Donc, tout ce que je veux, c’est le nombre total et non une liste pour chaque message.
Mais je n'arrive pas à comprendre. Toute aide là-bas?
En attendant, j'ai reçu quelques informations (de wpmudev) à ce sujet, me disant que c’est un truc lourd et pas une question très basique:
Ceci est moins fondamental que vous ne le pensez.
Tu dois:
- Enregistrer une nouvelle méta-boîte sur le WP admin
- Interroger la base de données sur le nombre total de nouveaux commentaires depuis la dernière visite de l'utilisateur actuellement connecté.
- Définissez le délai de visite (changer de page ne les définit donc pas immédiatement sur 0, ce serait frustrant)
- Écrivez le CSS pour rendre l'affichage joli
- Vous trouverez des astuces sur ce qu'il faut faire si vous examinez le cœur de WordPress dans le widget "En ce moment", mais ce sera probablement au-dessus de votre tête.
À ce stade, vous pouvez aussi le publier sous forme de plugin. C'est possible et pour ce qui est des plugins, c'est à peine intermédiaire, mais c'est encore très avancé pour ce forum. *
C'est ce qui m'a finalement rendu heureux, merci encore à @toscho. Il montre le nombre de commentaires en attente de modération. Il peut être placé partout où vous le souhaitez.
<?php
function t5_count_new_comments()
{
global $wpdb;
// last user access
$last_access = get_user_meta( get_current_user_id(), 'last_access', TRUE );
// comment query
$where = $wpdb->prepare( "WHERE comment_date > %s AND comment_approved='0'", $last_access );
$comment_query = $wpdb->get_results(
"SELECT comment_ID,
COUNT( comment_ID ) AS new_comments
FROM {$wpdb->comments} $where",
OBJECT
);
if ( ! isset ( $comment_query[0]->new_comments ) )
return 0;
return $comment_query[0]->new_comments;
}
$new_comments = t5_count_new_comments();
echo "There are $new_comments new comments.";
?>
En fait, ce n'est pas si difficile.
get_user_meta( get_current_user_id(), 'last_access', TRUE )
.comment_date
.>
.right_now_discussion_table_end
. Voir le fichier wp-admin/includes/dashboard.php
.Maintenant, collons-le ensemble:
<?php # -*- coding: utf-8 -*-
/**
* Plugin Name: T5 New Comments In Right Now Dashboard
* Description: Show the number of new comments on the Right Now dashboard
* Plugin URI:
* Version: 2013.03.16
* Author: Thomas Scholz
* Author URI: http://toscho.de
* Licence: MIT
* License URI: http://opensource.org/licenses/MIT
*/
add_action( 'right_now_discussion_table_end', 't5_new_comments_right_now' );
function t5_new_comments_right_now()
{
global $wpdb;
// last user access
$last_access = get_user_meta( get_current_user_id(), 'last_access', TRUE );
// comment query
$where = $wpdb->prepare( "WHERE comment_date > %s", $last_access );
$comment_query = $wpdb->get_results(
"SELECT comment_ID,
COUNT( comment_ID ) AS new_comments
FROM {$wpdb->comments} $where",
OBJECT
);
// default values
$num = 0;
$text = _x(
'New comments',
'no new comments on dashboard right now',
'plugin_t5_new_comments'
);
// overwrite default values
if ( isset ( $comment_query[0]->new_comments ) ) {
$num = $comment_query[0]->new_comments;
$text = _n( 'New comment', 'New comments', $num, 'plugin_t5_new_comments' );
}
// prepare for display
$num = number_format_i18n( $num );
$num = "<a href='edit-comments.php'><span class='total-count'>$num</span></a>";
$text = "<a href='edit-comments.php'>$text</a>";
// display extra column
printf(
'<tr>
<td class="b b-comments">%1$s</td>
<td class="last t comments">%2$s</td>
</tr>',
$num,
$text
);
}
Résultat:
En réponse à vos commentaires: Pour obtenir uniquement le nombre de nouveaux commentaires par un entier, utilisez quelque chose comme ceci:
function t5_count_new_comments()
{
global $wpdb;
// last user access
$last_access = get_user_meta( get_current_user_id(), 'last_access', TRUE );
// comment query
$where = $wpdb->prepare( "WHERE comment_date > %s", $last_access );
// to get unapproved comments only use this instead:
// $where = $wpdb->prepare( "WHERE comment_date > %s AND comment_approved='0'", $last_access );
$comment_query = $wpdb->get_results(
"SELECT comment_ID,
COUNT( comment_ID ) AS new_comments
FROM {$wpdb->comments} $where",
OBJECT
);
if ( ! isset ( $comment_query[0]->new_comments ) )
return 0;
return $comment_query[0]->new_comments;
}
Vous pouvez maintenant utiliser cette fonction dans votre code personnalisé:
$new_comments = t5_count_new_comments();
echo "There are $new_comments new comments.";