Comment créer une page WordPress pour lister tous les commentaires ?
J’ai créé cette page et cette page et cette page pour afficher tous les commentaires page par page. Pour que vous puissiez garder une trace de tous les commentaires postés triés par chronologie (le plus récent en premier).
Tout d’abord, vous devrez créer une page et mettre le contenu suivant (qui permet d’inclure un fichier source PHP dans une page/poste wordpress) :
[ include ]list-of-comments.php[/ include ]
Créez ensuite un PHP contenant le code source suivant :
<php
// Author: <a class="vglnk" target="_blank" href="https://helloacm.com/how-to-create-a-wordpress-page-to-list-all-comments/" rel="nofollow"><span>https</span><span>://</span><span>helloacm</span><span>.</span><span>com</span><span>/</span><span>how</span><span>-</span><span>to</span><span>-</span><span>create</span><span>-</span><span>a</span><span>-</span><span>wordpress</span><span>-</span><span>page</span><span>-</span><span>to</span><span>-</span><span>list</span><span>-</span><span>all</span><span>-</span><span>comments</span><span>/</span></a>
global $wpdb;
$query = "
select
count(1)
from
`wp_comments`,`wp_posts`
where
`wp_comments`.`comment_approved` = 1 and
`wp_comments`.`comment_post_ID` = `wp_posts`.`ID` and
`wp_posts`.`post_status` = 'publish'
";
$total = $wpdb->get_var($query);
$per = 25; // default comments per page
$page = get_query_var('page');
if (!$page) {
$page = 1;
}
$totalpages = ceil($total / $per);
if ($page > $totalpages) {
$page = 1;
}
$lowerbound = ($page - 1) * $per;
$upperbound = $lowerbound + $per;
$lmt=" limit ". $lowerbound. ",". $per;
$query = "select
`comment_post_ID`,
`comment_author`,
`comment_author_email`,
`comment_author_url`,
`comment_date_gmt`,
`comment_content`,
`post_title`,
`post_name`
from
`wp_comments`,`wp_posts`
where
`wp_comments`.`comment_approved` = 1 and
`wp_comments`.`comment_post_ID` = `wp_posts`.`ID` and
`wp_posts`.`post_status` = 'publish'
order by
`comment_ID` desc $lmt";
$result = $wpdb->get_results($query);
echo "Total <B>$total</B> Comments ($page/$totalpages Pages) - ";
if ($page > 1) {
echo "<a href='?page=".($page-1)."'>Newer Comments</a> - ";
}
if ($page < $totalpages) {
echo "<a href='?page=".($page+1)."'>Older Comments</a>";
}
echo "<BR/><BR/>";
if ($result) {
$i = $lowerbound + 1;
foreach ($result as $comment) {
$created_at = $comment->comment_date_gmt;
$text = strip_tags($comment->comment_content, "<p><br><div><img><span><pre><video><audio>");
$author = $comment->comment_author;
$email = $comment->comment_author_email;
$url = $comment->comment_author_url;
$post_id = $comment->comment_post_ID;
$post_title = $comment->post_title;
$post_name = $comment->post_name;
echo "<B>$i</B>. <i>$created_at</i> <a rel=nofollow target=_blank href='$url'>$author</a> Comments on <a href='<a class="vglnk" target="_blank" href="https://helloacm.com/$post_name/" rel="nofollow"><span>https</span><span>://</span><span>helloacm</span><span>.</span><span>com</span><span>/$</span><span>post</span><span>_</span><span>name</span><span>/</span></a>'>$post_title</a>: <BR/><div>$text</div>";
$i++;
echo "<BR/><BR/>";
}
}
if ($page < $totalpages) {
echo "<a href='?page=".($page+1)."'>Older Comments</a> - ";
}
if ($page > 1) {
echo "<a href='?page=".($page-1)."'>Newer Comments</a>";
}
Ensuite, vous aurez besoin d’un plugin wordpress par exemple Simple PHP Include pour inclure le fichier PHP dans une page. Assurez-vous de vider le cache de la page de commentaires. Les commentaires par défaut affichés par page sont de 25, mais vous pouvez facilement personnaliser cette variable.
Vous devez également vérifier et définir les URL préférables correctes pour la publication, dans mon cas, l’URL est au format /post_name.
Le SQL sous-jacent consiste simplement à combiner la page **wp_comments**et **wp_posts**de sorte que lors de la liste des commentaires, il n’affiche que les commentaires approuvés dans l’ordre décroissant du temps (les commentaires les plus récents répertoriés en premier) avec le titre des messages.