¿Cómo crear una página de WordPress para listar todos los comentarios?
He creado esta página y esta página y esta página para mostrar todos los comentarios página por página. Para que pueda realizar un seguimiento de todos los comentarios publicados ordenados por línea de tiempo (los más recientes primero).
Primero, deberá crear una página y colocar el siguiente contenido (que permite incluir un archivo fuente PHP en una página/publicación de wordpress):
[ include ]list-of-comments.php[/ include ]
Luego crea un PHP que contenga el siguiente código fuente:
<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>";
}
Luego, necesitará un complemento de wordpress, por ejemplo, Simple PHP Include para incluir el archivo PHP en una página. Asegúrate de borrar el caché de la página de comentarios. Los comentarios predeterminados que se muestran por página son 25, pero puede personalizar fácilmente esta variable.
También debe verificar y configurar las URL preferibles correctas para la publicación, en mi caso, la URL tiene el formato /post_name.
El SQL subyacente es solo para combinar la página **wp_comments**y **wp_posts**para que, al enumerar los comentarios, solo muestre los comentarios aprobados en orden descendente de tiempo (los comentarios más nuevos se enumeran primero) con el título de las publicaciones.