Làm Web

  • Design
  • Freebies
  • Tuts
  • Tools
  • Development
    • HTML / CSS
    • JavaScript
    • PHP
    • Ghost
  • WordPress
  • Info
    • Photography

WordPress: Hiển Thị Danh Sách Tác Giả Đi Kèm Với Phân Trang

By Thien Do • 18/10/2013 • WordPress

Tóm lại, sử dụng Template Tag là một cách đơn giản để truy vấn thông tin từ cơ sở dữ liệu và hiển thị nó ra bên ngoài trang web của bạn. Ví dụ, chúng ta có thể hiển thị tên của tác giả bài viết ( author ) bằng cách sử dụng the_author(); và sử dụng the_title(); để hiển thị tiêu đề trang hoặc bài viết.

Các Template Tag của WordPress khá là phong phú, cho phép chúng ta thoải mái tùy chỉnh trang web mà không cần đến các plugin của bên thứ ba. Trong hướng dẫn này, mình sẽ chỉ cho bạn cách tạo ra một custom page để hiển thị danh sách author sử dụng một bộ các template tag.

Thêm vào đó, chúng ta cũng sẽ áp dụng phân trang ( pagination ) để hiển thị user trong một danh sách các trang. Một trang như vậy có thể được yêu cầu cho một số dự án web.

Tạo Custom Page Template

Đầu tiên, tạo một file PHP mới trong thư mục theme của bạn ( cái mà đang active đó ). Trong ví dụ này, mình sử dụng theme TwentyTwelve. Thêm vào comment tag như sau để đăng ký nó như một page template.

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

Trong trang editor, thiết lập nó như template cho trang author của bạn.

Wordpress: Set Template

Lưu ý: bạn không nên đặt tên tập tin là author.php vì nó đã được bảo vệ bởi WordPress dùng để hiển thị các bài viết lưu trữ của tác giả.

Các Truy Vấn và Công Thức

Hãy thiết lập công thức. Mở cái template mới mà chúng ta vừa tạo ra ở trên.

Đầu tiên, chúng ta cần phải xác định số lượng của user mà chúng ta muốn hiển thị ra trên mỗi trang. Chúng ta thiết lập con số này trong một biến có tên $number. Bất cứ lúc nào bạn muốn thay đổi số lượng user hiển thị trên trang, hãy thay đổi giá trị trong biến này.

$number = 10;

Thêm đoạn mã sau đây để xác định số lượng phân trang hiện tại.

$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

Sau đó, sử dụng đoạn mã sau đây, mục đích là đếm số lượng user đã đi qua trong các trang ( offset ) – điều này sẽ có hiệu lực trong trang thứ hai trở đi.

$offset = ($paged - 1) * $number;

Chúng ta cần phải lấy được các user đã đăng ký trên trang web của chúng ta, và sau đó đếm tổng số bằng cách sử dụng hàm PHP count(), như sau.

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

Chúng ta cũng đếm tổng số user được truy vấn, trong đó bao gồm số lượng user sẽ được hiển thị và số lượng offset.

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

Sau đó, đếm tổng số trang sẽ được tạo ra. Chúng ta có thể đếm nó dựa trên tổng số user đã đăng ký và số lượng user hiển thị trên mỗi trang, như sau.

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

[adsense][/adsense]

Hiển Thị Danh Sách User

Như vậy là chúng ta đã thiết lập các công thức cần thiết, bây giờ chúng ta sẽ hiển thị kết quả ra trang.

Trong ví dụ này, chúng ta sẽ hiển thị một vài điều từ user: hình ảnh đại diện ( avatar ), tên đầy đủ và tiểu sử ngắn ( mô tả ). Những thông tin này có thể được lấy tương ứng bằng cách sử dụng các template tag sau: get_avatar và 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 ( Pagination )

Chắc chắn chúng ta không muốn hiển thị hàng trăm user trên cùng một trang duy nhất. Vì vậy, chúng ta sẽ tạo ra các liên kết phân trang và phân chia các kết quả trong nhiều trang. Thêm vào đó, chúng ta sẽ chỉ hiển thị số trang nếu tổng user đã đăng ký lớn hơn số lượng user đang được hiển thị trên mỗi trang.

Thật may, WordPress có một template tag cho phép chúng ta tạo ra số trang dễ dàng, được gọi là 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>';
	    }
	?>

Đoạn Code Đầy Đủ

Đây là tất cả các đoạn code mà bạn chỉ cần copy và paste vào trong page template của bạn.

	<?php
	$number     = 10;
	$paged      = (get_query_var('paged')) ? get_query_var('paged') : 1;
	$offset     = ($paged - 1) * $number;
	$users      = get_users();
	$query      = get_users('&offset='.$offset.'&number='.$number);
	$total_users = count($users);
	$total_query = count($query);
	$total_pages = intval($total_users / $number) + 1;

	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>';

	?>

	<?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>';
	?>
Download Source Code

Với một vài tinh chỉnh trong CSS, bạn có thể làm cho trang trông đẹp hơn.

WordPress: User List

customized wordpresshướng dẫn wordpressmẹo wordpressthủ thuật wordpresstối ưu wordpress
Tweet
0
15 Trang Web Với Thiết Kế Họa Tiết Đẹp Mắt
10 Công Cụ Siêu Hữu Ích Cho Web Typography

About the Author

Thien Do

Là một PHP developer nhưng mình muốn tìm hiểu nhiều hơn về CSS và JavaScript. Mình yêu thích những trang web đẹp và sáng tạo, đó là lý do tại sao mà mình thích chia sẻ chúng với các bạn.

You Might Also Like

  • 15 Plugin WordPress Bạn Không Thể Thiếu 2014

  • 5 Cách Để Debug WordPress

  • 8 Cách Để Tối Ưu Hóa Trang Web WordPress Của Bạn

  • Xóa /category/ Trong URL WordPress

Liên hệ mua trang web này

Email: info@thiendo.com
Phone: 0914 22 12 02

Bài viết được quan tâm

CSS position: fixed Trong Các Trình Duyệt Di Động

On 08/07/2013
01

Xu Hướng Mới Trong Thiết Kế Web

On 06/08/2013
02

19 Ví Dụ về Thiết Kế Web Tối Giản

On 16/07/2013
03

25 Bài Hướng Dẫn Tạo Hiệu Ứng Chữ Đẹp với CSS3

On 16/06/2013
04

Fontbox.vn – Thư viện Font Tiếng Việt tuyệt đẹp

On 05/06/2013
05

Find us on Facebook

Lamweb.com
Facebook Twitter

LÀM WEB - CHIA SẺ THÔNG TIN, XU HƯỚNG, CÔNG NGHỆ VÀ CÁC THỦ THUẬT WEB

© 2019 LamWeb.com - All rights reserved.