wordpress-development-wolfactive-949x475
01/06/2020

WordPress: Thiết Kế Theme ( P8: Archive.php )

Chào mừng các bạn đã đến với series WordPress: Thiết Kế Theme của WolfActive. Như vậy series đã trải dài suốt 7 phần và đây là phần thứ 8. Ở phần thứ 8 series WordPress này, WolfActive sẽ hướng dẫn các bạn tạo Archive.php trong WordPress. 

Vậy archive.php trong wordpress có tác dụng gì?

Đối với các trang website về tin tức, bài đọc đặc biệt là các bài review về sách, phim,… thì Archive.php là không thể thiếu đối với trang web. Bởi mỗi người sẽ có cách viết bài khác nhau nhờ đó mà gây ấn tượng với đọc giả. Khi người đọc cảm thấy thích người viết họ sẽ tìm đến những bài viết của người đó để đọc tiếp. Do đó Archive có tác dụng xuất ra các bài viết của tác giả. Ngoài ra ta còn có thể sử dụng nó để tạo trang categories để lọc các chuyên mục bài viết.

Tạo Archive.php.

Tương tự như các file php khác ở các bạn cần tạo có 2 phần get_header()get_footer() ở trong file này. Sau đó chúng ta sẽ tạo template cho file archive.php.

<section id="ArchivePost">
  <div class="archive__container">
    <div class="archive__background container">
      <?php if (is_author()): ?>
        <div class="post__author-name">
          <h2>Tác giả: <span class="name__author"><?php the_author(); ?></span> </h2>
        </div>
        <ul class="grid__item-background">
        <?php
        while(have_posts()){
          the_post();
          ?>
          <li class="grid__item">
            <div class="wrapper__post-item">
              <div class="post-item-contain">
                <div class="post-item-image">
                    <div class="kenburns-top">
                      <?php echo get_the_post_thumbnail( get_the_ID(), 'medium', null );?>
                    </div>
                </div>
                <div class="wrapper-author--date">
                  <span class="wrapper__date-calendar"><i class="far fa-calendar-alt"></i><span><?php echo get_the_date() ?></span></span>
                </div>
                <div class="post-item-content">
                  <div class="wrapper-post--title">
                    <a href="<?php echo get_permalink(); ?>"><h2 class="post--title"><?php echo get_the_title() ?></h2></a>
                  </div>
                  <div class="read-more">
                    <a href="<?php echo get_permalink(); ?>">Đọc Tiếp</a>
                  </div>
                </div>
              </div>
            </div>
            </li>
            <?php
      }?>
    </ul>
      <?php endif; ?>
      <?php if (is_category()): ?>
        <div class="post__categories-name">
          <h2>Categories: <span class="name__categories"><?php single_cat_title(); ?></span> </h2>
        </div>
        <ul class="grid__item-background">
        <?php
        while(have_posts()){
          the_post();
          ?>
          <li class="grid__item">
            <div class="wrapper__post-item">
              <div class="post-item-contain">
                <div class="post-item-image">
                    <div class="kenburns-top">
                      <?php echo get_the_post_thumbnail( get_the_ID(), 'medium', null );?>
                    </div>
                </div>
                <div class="wrapper-author--date">
                  <span class="wrapper__date-calendar"><i class="far fa-calendar-alt"></i><span><?php echo get_the_date() ?></span></span>
                </div>
                <div class="post-item-content">
                  <div class="wrapper-post--title">
                    <a href="<?php echo get_permalink(); ?>"><h2 class="post--title"><?php echo get_the_title() ?></h2></a>
                  </div>
                  <div class="read-more">
                    <a href="<?php echo get_permalink(); ?>">Đọc Tiếp</a>
                  </div>
                </div>
              </div>
            </div>
            </li>
            <?php
      }?>
    </ul>
      <?php endif; ?>
    </div>
  </div>
</section>

Ở đoạn code trên các bạn có thể thấy mình sử dụng 2 đoạn lệnh if để phân chia phần author, categories của website. if sẽ kiểm tra rằng ta click vào phần category ( is_category() ) hay author ( is_author() ) mà sẽ hiển thị phần nội dung của nó.

Sau khi tiến vào bên trong if nó sẽ bắt đầu vào vòng lặp để kiểm tra xem post có tồn tại hay không thông qua hàm have_posts() nếu có tồn tại thì lấy bài post ra thông qua hàm the_posts(). Và để xuất ra được tên của category ta sẽ dùng hàm single_cat_title() để có thể xuất ra tên category và dùng hàm the_author() để xuất ra tên tác giả.

Có lẽ, các bạn thắc mắc rằng “làm thế nào để có thể lấy được tên category hay tên author khi ta nhấn vào?”. Đó chính là câu hỏi mà các bạn sẽ nghĩ tới khi làm archive.php. 

Đầu tiên mình sẽ đến category trước, các bạn có còn nhớ ở phần 4.2 của series WordPress thiết kế theme. Chúng ta có tạo một menu navigation, và trong đó có tên category, chúng ta chỉ cần click vào là sẽ tự động nhận. Vậy nếu như ta muốn tự thiết kế thì như thế nào? Lúc này các bạn sẽ dùng hàm sau: get_the_category_list(‘, ‘) để xuất ra categories của bài viết.

<?php echo get_the_category_list(', '); ?>

Khi ta nhấn vào thì nó chuyển đến archive.php.

Bây giờ chúng ta sẽ đến với author, tại phần trước (P7: single.php), mình có nói đến việc các bạn xuất tên tác giả bằng hàm the_author() như trong bài này đúng không? Nhưng nếu gọi hàm như vậy thì chúng ta sẽ không thể lấy được đường dẫn đến file archive.php. Như vậy chúng ta cần phải đổi sang hàm sau:

the_author_posts_link();

Và đây là kết quả chúng ta:

WordPRess Result archive php image

WordPRess Result archive php image

Như vậy mình đã hướng dẫn cho các bạn các tạo Archive.php dùng cho categories và author cho bài viết của mình. Chúc các bạn thành công nhé. Mọi thắc mắc các bạn liên hệ fanpage tụi mình hoặc để lại comment + tên bài để tụi mình giải đáp nhé.

Vui lòng chọn size trước khi đặt hàng (*)