Jak utworzyć stronę WordPress, aby wyświetlić wszystkie komentarze?
Utworzyłem tę stronę, tę stronę i tę stronę, aby wyświetlać wszystkie komentarze strona po stronie. Dzięki temu możesz śledzić wszystkie opublikowane komentarze posortowane według osi czasu (od najnowszych).
Najpierw musisz stworzyć stronę i umieścić następującą treść (która pozwoli na dołączenie pliku źródłowego PHP do strony/postu wordpress):
[ include ]list-of-comments.php[/ include ]
Następnie utwórz PHP zawierający następujący kod źródłowy:
<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>";
}
Następnie będziesz potrzebować wtyczki WordPress, np. Simple PHP Include, aby dołączyć plik PHP do strony. Upewnij się, że wyczyściłeś pamięć podręczną strony komentarzy. Domyślne komentarze wyświetlane na stronie to 25, ale możesz łatwo dostosować tę zmienną.
Musisz również sprawdzić i ustawić poprawne preferowane adresy URL dla postu, w moim przypadku adres URL ma format /nazwa_postu.
Bazowy kod SQL polega po prostu na połączeniu strony **wp_comments**i **wp_posts**tak, aby podczas wyświetlania komentarzy wyświetlały tylko zatwierdzone komentarze w kolejności malejącej czasu (najnowsze komentarze wymienione jako pierwsze) wraz z tytułami postów.