01 09 10 Filtrowanie komentarzy w Wordpresie
Kilka dni temu natrafiłem na mały problem związany z komentarzami. Mianowicie chodziło o ich typ. Aktualnie WordPress posiada trzy typy komentarzy, zwykłe, który oznaczany jest z pomocą pustego łańcucha znaków w bazie danych, komentarze typu trackback i komentarze typu pingback.
Ponieważ komentarze typu pingback i trackback nie wnoszą zbyt wiele, postanowiłem oddzielić je od reszty i nie wyświetlać. Problem jest w sumie stary jak świat i ma tysiąc rozwiązań. Poniżej przedstawiam moje własne, którke i dość łatwe do zaimplentowania.
Aby pobrać wszystkie komentarze dla wpisu można skorzystać z funkcji get_comments, która zwraca tablicę obiektów. Pozostaje odfiltrować te, których atrybut type ma wartość inną niż pusty łańcuch znaków. Poniższa funkcja dokładnie to robi. Pobiera ona tablicę zwróconą przez get_comments zwracając tablicę z obiektami o rządanym atrybucie type.
function get_only_true_comments($comments){
$out = array();
foreach($comments as $comment){
if( empty($comment -> comment_type) ){
$out[] = $comment;
}
}
return $out;
}
Powyższa funkcja powinna znaleźć się w pliku functions.php aktywnego motywu. A jej użycie może wyglądać jak następuje:
get_only_true_comments( get_comments(array('post_id' => $post -> ID,'order' => 'ASC')) );
Zakładam użycie w pliku comments.php aktywnego motywu.
Wracając do kwestii pobierania komentarzy z bazy danych. Wśród wielu zmian jakie zaszły w wersji 3.0 WordPressa zdarzyła się jedna, która dotknęła get_comments. Funkcja ta została nieco rozszerzona i aktualnie uwzględnia nie tylko atrybut type ale również kilka innych, co znacznie ułatwi precyzyjne pobieranie komentarzy z bazy danych. Zainteresowanych szczegółami implemtacji odsyłam do pliku wp-includes/comment.php gdzie funkcja jest zlokalizowana.
Przydatne informacje na temat użycia funkcji get_comments można znaleźć na tej stronie kodeksu Wordpresa.
Autor wpisu jest blogerem, programistą PHP, administratorem Linux oraz twórcą blogów
RSS Subskrybuj wpisy bloga