Tạo danh sách người đóng góp (contributor) cho bài viết

Để có được một bài đăng hoàn hảo nhất trên WordPress, đôi khi bạn cần sự đóng góp từ nhiều người dùng khác nhau. Lúc này, bạn có thể sẽ muốn tạo danh sách người đóng góp cho bài viết (contributor) một cách tự động nhằm tiết kiệm thời gian. Việc này có thể được thực hiện bằng cách lấy danh sách người dùng đã chỉnh sửa bài viết của bạn trong revision, sau đó hiển thị nó lên trang bài viết. 

Trước hết, cùng tìm hiểu về cơ chế hoạt động của revision, tại sao có thể dựa vào revision để lấy danh sách người đóng góp cho bài viết nhé.

Cơ chế hoạt động của revision

Revision là tính năng mặc định của WordPress giúp bạn truy cập vào các bản sao lưu dữ liệu khi lưu bài viết bằng tay hoặc tự động. Mỗi lần bạn lưu một bản nháp, sẽ có một bản ghi được giữ lại để bạn có thể dễ dàng khôi phục lại các nội dung của lần lưu trước đó. 

Vậy nên revision sẽ lưu trữ lại giữ liệu về các lần chỉnh sửa trước khi lưu, cũng như ai là người đã chỉnh sửa các nội dung đó. Nhờ vào cơ chế này, chúng ta có thể lấy danh sách người đóng góp – contributor được lưu trong revision và hiển thị nó ra bài viết.

Dùng Revision để tạo danh sách người đóng góp (contributor) cho bài viết

Bước 1: Lấy danh sách contributor được lưu trong Revision

Đầu tiên, mình sẽ thực hiện lấy danh sách những người đã chỉnh sửa bài viết được lưu trong revision bằng cách thêm đoạn code sau vào file functions.php:

function get_the_modified_authors(){
    global $wpdb;
    $results = $wpdb->get_results( $wpdb->prepare("SELECT post_author FROM $wpdb->posts WHERE (post_type = '%s' AND ID = %d) OR (post_type = 'revision' AND post_parent = %d) GROUP BY post_author", get_post_type( get_the_ID() ), get_the_ID(), get_the_ID() ) );
    echo '<ul>';
    foreach($results as $row){
        $authors =  get_the_author_meta('display_name', $row->post_author );
        echo '<li>' . $authors . '</li>';
    }
    echo '</ul>';
}

Trong đó:

  • $results = $wpdb->get_results( $wpdb->prepare("SELECT post_author FROM $wpdb->posts WHERE (post_type = '%s' AND ID = %d) OR (post_type = 'revision' AND post_parent = %d) GROUP BY post_author", get_post_type( get_the_ID() ), get_the_ID(), get_the_ID() ) ); // : Đoạn code này dùng để lấy danh sách ID những người dùng đã chỉnh sửa bài viết, sau đó gộp các ID trùng nhau lại.
  • foreach($results as $row){
    $authors[] = get_the_author_meta('display_name', $row->post_author );
    } //
    : Vòng lặp này sẽ lấy tên những người dùng tương ứng với các ID đã được lấy ra từ đoạn code ở trên.

Bước 2: Hiển thị danh sách contributor lên bài viết

Sau khi lấy được danh sách contributor được lưu ở revision, mình sẽ hiển thị nó lên trang bài viết. Bạn tìm đến file nội dung của trang single, chọn vị trí muốn hiển thị danh sách contributor và chèn đoạn code sau vào nhé. 

<div class="list-contributors">
<h3>Contributors list</h3>
        <?php echo get_the_modified_authors(); ?>
</div>

Trong đó Contributors list là tên của danh sách sẽ hiển thị ra ngoài frontend mà mình đặt.

Bạn có thể đặt tên cho danh sách đóng góp này tùy ý nhé.

Lưu ý: tùy vào từng theme bạn dùng mà file chứa nội dung trang single sẽ khác nhau, ví dụ mình đang dùng theme eStar (bạn có thể tải và dùng thử nó tại đây hoàn toàn miễn phí) và cần phải chỉnh sửa trong file post.php.

Sau đây là danh sách contributor (gồm 3 người đóng góp vào bài viết) trong một trang single của mình:

Hiển thị danh sách contributor lên bài viết WordPress

Nếu muốn danh sách contributor hiển thị đẹp mắt hơn thì bạn có thể tự style lại nhé. Xong rồi, đơn giản phải không?

Lời cuối

Revision không chỉ giúp bạn tạo các bản sao lưu để xem lại các bản nháp đã lưu mà còn giúp bạn lấy được danh sách contributor cho các bài đăng. Bằng việc sử dụng vài dòng code ngắn gọn là bạn đã có danh sách những tác giả đã đóng góp cho bài viết của mình rồi. Chúc các bạn thành công!

Để lại bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *