Hôm nay nhân lúc cập nhật lại giao diện codfe.com mình muốn hiển thị tất cả comment của website vậy là mày mò lên google search từ khóa “show all wordpress comments” tạm dịch là hiển thị tất cả comment trong web wordpress. Các bài viết cả tiếng Việt và tiếng Anh khá nhiều tuy nhiên hầu hết là ko có hoạt động được. Cũng đúng thôi code cập nhật thường xuyên theo các phiên bản nên code ko chạy là bình thường. Chỉ cần nắm được từ khóa đúng cho vấn đề, tìm lại liệu là giải quyết được.
Sau một hồi tìm kiếm thì từ khóa liên quan đến các hàm lọc comment trong wordpress là WP_Comment_Query mình sẽ giải thích và demo bên dưới nhé!
WP_Comment_Query là gì?
Từ phiên bản wodpress 3.2 hàm WP_Comment_Query xử lý hết những yêu cầu về về bình luận trong website wordpress. Hàm WP_Comment_Query sẽ truy vấn dữ liệu trong 2 table chính trong database wordpress là wp_comments và wp_commentmeta.
Sau đây là đoạn code mẫu demo các sử dụng class WP_Comment_Query
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php $args = array( // Arguments for your query. ); $comments_query = new WP_Comment_Query; $comments = $comments_query->query( $args ); if ( $comments ) { foreach ( $comments as $comment ) { // Do what you do for each comment here. } } else { // Display message because there are no comments. } ?> |
Trong đoạn code ví dụ trên có 2 phần, phần 1 là tạo bộ lọc để lọc dữ liệu $args = array… phần thứ 2 là vòng lặp lọc ra các comment cần hiển thị từ dòng foreach … tùy yêu cầu mà chúng ta sẽ tạo ra các bộ lọc dữ liệu và hàm hiển thị tương ứng.
CÁC HÀM VÀ THUỘC TÍNH CỦA LỚP WP_Comment_Query
Trong phạm vi bài viết này mình chỉ đưa ra các thuộc tính (properties ) và phương thức (methods) phổ biến thôi nhé!
Các thuộc tính của WP_Comment_Query
WP_Comment_Query có 5 thuộc tính như sau:
- $request: A string that contains the SQL query.
- $meta_query: An array to make a “meta query” with the help of the WP_Meta_Query class.
- $date_query: An array to make a “date query” with the help of the WP_Date_Query class.
- $query_vars: An array of the variables of the query.
- $comments: An array of comments fetched with the query.
Các phương thức của WP_Comment_Query
Class WP_Comment_Query chỉ có một phương thức duy nhất là query().
Phương thức query() thực hiện việc truy xuất dữ liệu, sử dụng các tham số mà mình sẽ liệt kê và giải thích phần bên dưới nhé:
- comment_ID: The comment’s ID.
- comment_post_ID: The post’s ID which the comment is made to.
- comment_author: The comment author’s name.
- comment_author_email: The comment author’s email address.
- comment_author_url: The comment author’s website URL.
- comment_author_IP: The comment IP address.
- comment_date: The comment date.
- comment_date_gmt: The comment in GMT time format.
- comment_content: The content of the comment.
- comment_karma: An unused database field for each comment—plugins can use this to store, well, the comment’s karma.
- comment_approved: The comment’s approval status.
- comment_agent: The comment author’s user agent.
- comment_type: The comment’s type if it’s a pingback or a trackback.
- comment_parent: For nested comments, this is the parent comment’s ID. If it’s the top-level comment, this will be 0.
- user_id: 0 if the comment author isn’t registered with the website, the ID of the user otherwise.
Cùng xem qua các tham số của Class WP_Comment_Query.
Có tất cả 34 tham số có thể dùng trong WP_Comment_Query, vì là rất nhiều tham số như vậy nên mình sẽ liệt kê ra và phân loại bên dưới để mỗi lần sử dụng tiện tra cứu:
- author_email (string): Comment author email address.
- author__in (array): Author IDs to include in the query.
- author__not_in (array): Author IDs to exclude from the query.
- post_author__in (array): Same as author__in.
- post_author__not_in (array): Same as author__not_in.
- include_unapproved (array): An array of user IDs or email addresses whose comments should be returned regardless of their approval status.
- fields (string): Comment fields to return. Accepts ‘ids’ only, used to return only the comment IDs.
- comment__in (array): Comment IDs to include in the query.
- comment__not_in (array): Comment IDs to exclude from the query.
- karma (integer): The “karma” score to return matching comments for. (Remember comment_karma from the previous section?)
- number (integer): The maximum number of comments to return.
- offset (integer): The number of comments to pass over in the query.
- orderby (string or array): A comment status or an array of statuses to order the query results. Accepts all the keys returned from the query() method, plus ‘meta_value’, ‘meta_value_num’, value of $meta_key, FALSE, empty array or ‘none’. (The last three disable the ORDER BY clause in the query.)
- order (string): How to order retrieved comments—’ASC’ for ascending or ‘DESC’ for descending. (Default: ‘DESC’)
- parent (integer): Parent comment’s ID to retrieve children.
- post_id (integer): Post ID to retrieve comments. (Default: 0)
- post__in (array): Post IDs to include in the results.
- post__not_in (array): Post IDs to exclude from the results.
- post_author (integer): Post author’s ID to limit results by.
- post_name (string): Post slug to get comments from.
- post_parent (integer): Parent post ID to get comments from.
- post_type (string): Post type to get comments from.
- post_status (string): Post status to get comments from.
- status (string): Comment status to limit results by. Accepts ‘hold’, ‘approve’, ‘all’ or a custom comment status. (Default: ‘all’)
- type (string or array): A comment type or an array of comment types to filter the query. Accepts ‘comment’, ‘pings’ (meaning pingbacks and trackbacks combined), or custom comment types.
- type__in (array): Comment types to include in the query.
- type__not_in (array): Comment types to exclude from the query.
- user_id (integer): User ID to include comments of a specific user.
- search (string): Search terms to get matching comments for.
- count (boolean): Return the comment count (TRUE) or an array of comments (FALSE). (Default: FALSE)
- meta_key (string): A custom meta key to include matching comments only.
- meta_value (string): A custom meta value to include matching comments only.
- meta_query (array): An array of WP_Meta_Query clauses (which we’ll see in the next part of this series).
- date_query (array): An array of WP_Date_Query clauses (which we’ll see in the next part of this series). (Default: NULL)
Ghi chú: Giá trị mặt định cho các tham số này là null.
CÁC VÍ DỤ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
<?php // Get the global `$wp_query` object... global $wp_query; // ...and use it to get post author's id. $post_author_id = $wp_query->post->post_author; // Setup arguments. $args = array ( 'user_id' => $post_author_id, 'orderby' => 'comment_ID' ); // Custom comment query. $my_comment_query = new WP_Comment_Query; $comments = $my_comment_query->query( $args ); // Check for comments. if ( $comments ) { // Start listing comments. echo '<ul class="author-comments">'; // Loop over comments. foreach( $comments as $comment ) { echo '<li>' . $comment->comment_content . '</li>'; } // Stop listing comments. echo '</ul>'; } else { // Display message if no comments are found. echo '<p class="no-author-comments">' . __( 'The post author didn\'t post any comments.', 'tutsplus' ) . '</p>'; } ?> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
//codfe.com tao hàm hiển thị 5 comment mới nhất của web function create_shortcode_list_comment() { $html = ''; // Arguments for the query $args = array( 'status' => 'approve', 'number'=> 5, ); // The comment query $comments_query = new WP_Comment_Query; $comments = $comments_query->query( $args ); // The comment loop if ( !empty( $comments ) ) { $html.='<div class="content-w content-news">'; $html.= '<ul>'; foreach ( $comments as $comment ) { $html.= '<li>'; $html.= '<p><a href="'.get_comment_link($comment->comment_ID).'">'.$comment->comment_content .'</a></p>'; $html.= '</li>'; } $html.= '</ul>'; $html.= '</div>'; } else { $html.= 'No comments found.'; } return $html; } //Codfe.com nhúng [show_shortcode_comment] sẽ hiển thị các comment ra add_shortcode( 'show_shortcode_comment', 'create_shortcode_list_comment' ); |