Come creare una pagina WordPress per elencare tutti i commenti?
Ho creato questa pagina e questa pagina e questa pagina per mostrare tutti i commenti pagina per pagina. In modo da poter tenere traccia di tutti i commenti pubblicati ordinati per sequenza temporale (prima i più recenti).
Innanzitutto, dovrai creare una pagina e inserire il seguente contenuto (che consente di includere un file sorgente PHP in una pagina/post di wordpress):
[ include ]list-of-comments.php[/ include ]
Quindi crea un PHP contenente il seguente codice sorgente:
<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>";
}
Quindi, avrai bisogno di un plugin per wordpress, ad esempio Simple PHP Include, per includere il file PHP in una pagina. Assicurati di svuotare la cache della pagina dei commenti. I commenti predefiniti mostrati per pagina sono 25 ma puoi personalizzare facilmente questa variabile.
Devi anche controllare e impostare gli URL preferibili corretti per il post, nel mio caso, l’URL è nel formato /post_name.
L’ SQL sottostante è solo quello di combinare la pagina **wp_comments**e **wp_posts**in modo che quando elenca i commenti mostri solo i commenti approvati nell’ordine discendente del tempo (i commenti più recenti elencati per primi) con il titolo dei post.