Hoàng Web

Thiết Kế Website WordPress

  • Kho giao diện
  • Dịch Vụ
    • Tăng tốc độ WordPress
    • Tối ưu website WordPress
    • Thiết kế website WordPress
    • Viết plugin WordPress
    • Sửa lỗi nâng cấp website
  • Bảng giá
  • Quy trình làm việc
  • Giới thiệu
  • Liên Lạc
Trang chủ » Wordpress » Hiển thị danh sách Author với phân trang [WordPress]

Hiển thị danh sách Author với phân trang [WordPress]

Thứ Năm, 09/10/2014 by Hoàng Quách

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

WordPress template tags cho phép bạn tùy biến hiển thị dữ liệu của website mà không cần đến plugin hỗ trợ. Trong bài viết này mình sẽ chỉ cho các bạn cách tạo custom page hiển thị danh sách users sử dụng các hàm template tag và có phân trang.

Tạo custom page

Trước tiên, bạn cần tạo một custom page là file template có thể trò vào nội dung page, bạn tạo file PHP trong thư mục theme, giả sử file có tên ‘page-users.php’. Thêm các dòng khai báo tên template vào file:

<?php  
/*  
Template Name: User Page  
*/  

Trong cửa sổ tạo trang mới, bạn chọn template ‘User Page’ cho trang sẽ liệt kê tác giả.
set-template[1]

Chúng ta cần tạo một vài thông số cho phân trang users, thêm vào file PHP các dòng sau:

$number = 10; 
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1; 
$offset = ($paged - 1) * $number;

Mình thiết lập tổng số users hiện trên một phân trang vào biến $number.
Khác với cách tạo phân trang trong wordpress sử dụng $wpdb. Nếu viết trực tiếp lệnh SQL bạn được phép dùng biến SQL_CALC_FOUND_ROWS và dễ dàng lấy giá trị biến này sau khi thực hiện sql.
Trong trường hợp này bạn cần gọi 2 lần hàm get_users , đầu tiên lấy tổng số users bằng hàm php count().

$users = get_users();  
$total_users = count($users);  

Sau đó, chúng ta giới hạn dữ liệu users trên phân trang yêu cầu, sử dụng tham số offset. Khác với get_posts, WP_Query sử dụng tham số posts_per_page để giới hạn dữ liệu trả về trên một phân trang.

$query = get_users('&offset='.$offset.'&number='.$number);  

Và thuật toán đếm tổng số trang dựa theo tổng số dòng và số dòng trên một trang, cũng được sử dụng. Thêm tiếp dòng sau:

$total_pages = intval($total_users / $number) + 1;  

Hiển thị Users

Bây giờ đến công đoạn hiển thị thông tin của mỗi user trong trang kết quả. Ví dụ mình sẽ cho hiển thị một vài trường lấy từ user như: avatar, full name, biography. Lấy những thông tin này bởi các hàm template tags: get_avatar, get_the_author_meta.

echo '<ul id="users">';  
foreach($query as $q) { ?>  
                  
    <li class="user clearfix">  
        <div class="user-avatar">  
            <?php echo get_avatar( $q->ID, 80 ); ?>      
        </div>  
        <div class="user-data">  
  
            <h4 class="user-name">  
                <a href="<?php echo get_author_posts_url($q->ID);?>">  
                    <?php echo get_the_author_meta('display_name', $q->ID);?>  
                </a>  
            </h4>  
  
            <?php if (get_the_author_meta('description', $q->ID) != '') : ?>  
                <p><?php echo get_the_author_meta('description', $q->ID); ?></p>  
            <?php endif; ?>  
  
        </div>  
    </li>  
  
<?php }   
echo '</ul>';  

Tạo phân trang

Chắc chắn bạn không bao giờ muốn hiển thị gần 100 users trên một trang, vì vậy chúng ta sẽ tạo liên kết phân trang và tách ra nhiều trang kế tiếp. Thêm vào đó, chúng ta sẽ chỉ hiển thị phân trang nếu như tổng số user đã đăng ký lớn hơn số lượng yêu cầu hiển thị trên một trang. Để làm điều này, bạn sử dụng hàm paginate_links

<?php  
    if ($total_users > $total_query) {  
        echo '<div id="pagination" class="clearfix">';  
        echo '<span class="pages">Pages:</span>';  
          $current_page = max(1, get_query_var('paged'));  
          echo paginate_links(array(  
                'base' => get_pagenum_link(1) . '%_%',  
                'format' => 'page/%#%/',  
                'current' => $current_page,  
                'total' => $total_pages  
                'prev_next'    => false,  
                'type'         => 'list',  
            ));  
        echo '</div>';  
    }  
?>  

Trang trí thêm CSS kết quả hiển thị trông đẹp hơn.
user-list-pagination
Good luck!

Nếu bạn thích bài viết này, hãy ủng hộ chúng tôi bằng cách đăng ký nhận bài viết mới ở bên dưới và đừng quên chia sẻ kiến thức này với bạn bè của bạn nhé. Bạn cũng có thể theo dõi blog này trên Twitter và Facebook

  • shares
  • Facebook
  • Facebook Messenger
  • Gmail
  • Viber
  • Skype

Bài viết liên quan:

  1. Liệt kê users có phân trang trong WordPress
  2. Hướng dẫn tạo phân trang wordpress
  3. [WordPress] Tùy biến thanh admin menu
  4. [WordPress] Lấy dữ liệu post_type liên kết với nav_menu_item
  5. Sửa tham số form tìm kiếm trong wordpress
  6. [Syntaxhighligher] Làm đẹp code trong bài viết tốt nhất
  7. Thay đổi cấu trúc tùy biến layout trong genesis child theme
  8. Tùy chỉnh search box cho genesis
  9. Cách chèn trang 404 template không mất SEO
  10. Hướng dẫn tạo template trong genesis

Chuyên mục: Wordpress Tìm kiếm: pagination, user

Đăng ký nhận bài viết mới

Vui lòng điền chính xác email ở bên dưới để nhận thông báo bài viết mới.

Bạn đã đăng ký thành công!

Lỗi! hãy làm lại.

thông tin của bạn được 100% bảo mật...

Tôi giúp gì cho bạn?

Nhận bài viết mới

Vui lòng điền chính xác email ở bên dưới để nhận thông báo bài viết mới.

Cám ơn bạn đã đăng ký.

Lỗi, hãy làm lại

thông tin của bạn được 100% bảo mật...

HOÀNG WEB

Địa chỉ: Tây Sơn, Phường Quang Trung, Quận Đống Đa, Hà Nội

Hotline: 0987 342 124 (8h:00 – 21h:00)

Email: [email protected]

Website: www.hoangweb.com

KẾT NỐI VỚI TÔI

  • Facebook
  • Snapchat

SẢN PHẨM

  • Plugin Auto-Sync Google Shopping cho WooCommerce
  • Phần mềm chặn click ảo
  • WP2Speed.com – Tăng tốc WordPress

LIÊN KẾT

  • Hướng dẫn thanh toán
  • Chính sách hoàn tiền
  • Trung tâm hỗ trợ

Copyright © 2021 | All rights reserved | HOANG WEB
Mọi hình thức sao chép nội dung trên website này mà chưa được sự đồng ý đều là trái phép.