Bài 10: Hiển thị Meta Box - Metadata ngoài frontend

Sẵn có bạn hỏi làm thế nào để hiển thị nội dung bài viết ra ngoài frontend thì mình viết luôn bài này để những bạn khác tham khảo luôn.

Trong bài này mình sẽ hướng dẫn lấy dữ liệu ra hai trang đó là trang danh sách bài viết và trang chi tiết, mời các bạn theo dõi.

1. Lấy dữ liệu Metadata ngoài frontend

Ở bài Metadata API mình có giới thiệu một số hàm dùng để lấy nội dung của Metadata đó là các hàm:

  • get_metadata()
  • get_post_meta()
  • get_comment_meta()
  • get_term_meta()
  • get_user_meta()

Trong các hàm đó bạn sẽ truyền ID và Key của metadata muốn lấy và nó sẽ return về giá trị cần lấy.

Ví dụ: Lấy meta data post_link_download của bài post có id = 12

$link_download = get_metadata('post', 12, 'post_link_download ', true);
// Hoặc
$link_download = get_post_meta(12, 'post_link_download ', true);

Trường hợp bạn muốn lấy danh sách tất cả các Meta data của bài viết có ID = 12 thì bạn chỉ truyền một tham số $post_id là được.

$link_download = get_metadata('post', 12);
// Hoặc
$link_download = get_post_meta(12);

Lưu ý là trường hợp này nó sẽ return về một mảng chứa các thông tin của Metadata.

Đơn giản, dễ chơi phải ko các bạn :)

2. Hiển thị Metadata ở trang danh sách bài viết

Ở trang danh sách bài viết thì ta sử dụng vòng lặp (Loop) dạng như sau:

if (have_posts())
{
    while (have_posts())
    {
        the_post();
        
        // Show nội dung bài viết
        
    }
}

Lúc này muốn lấy Metadata của mỗi bài viết thì ta chỉ cần đặt nó trong vòng lặp là được. Ví dụ lấy thông tin post_link_downloadpost_link_demo ở mỗi vòng lặp thì ta làm như sau:

Cách 1: lấy từng key Metadata

// CÁCH 1: LẤY TỪNG KEY
if (have_posts())
{
    while (have_posts())
    {
        the_post();
        
        // lấy metadata
        $link_download = get_post_meta(get_the_ID(), 'post_link_download');
        $link_demo = get_post_meta(get_the_ID(), 'post_link_demo');
        
        // Show nội dung bài viết
        echo $link_download;
        echo $link_demo;
        // ...
    }
}

Cách 2: Lấy hết key Metadata

// CÁCH 2: LẤY HẾT KEY
if (have_posts())
{
    while (have_posts())
    {
        the_post();
        
        // lấy metadata
        $metadata = get_post_meta(get_the_ID());
        
        $link_download = isset($metadata['post_link_download']) ? $metadata['post_link_download'] : '';
        $link_demo = isset($metadata['post_link_demo']) ? $metadata['post_link_demo'] : '';
        
        // Show nội dung bài viết
        echo $link_download;
        echo $link_demo;
        // ...
    }
}

3.  Hiển thị Metadata ở trang chi tiết

Bài viết được đăng tại freetuts.net

Cách sử dụng ở trang này cũng chẳng khác gì mấy so với trang danh sách bài viết, cái khác là bạn áp dụng code và truyền tham số ở file single.php thôi :)

4. Lời kết

Như vậy là mình đã hướng dẫn các bạn cách sử dụng Meta Box và Metadata ở frontend, đây cũng là một câu hỏi mà nhiều bạn đã hỏi mình nên mình viết luôn cho tiện trả lời, thay vì trả lời nhiều lần thì gửi 1 link là được :)

Bài này mình xin dùng ở đây, bài tiếp theo chúng ta sẽ tìm hiểu về Custom Post Type.

Nguồn: freetuts.net

Hệ thống mua khóa học với giá cực rẻ

Tổng hợp những khóa học hay với chi phí mua cực rẻ so với mức giá của các trung tâm đưa ra, với tiêu chí hoa hồng của freetuts nhận được sẽ dành tặng cho các bạn.

BÌNH LUẬN

Đặt câu hỏi: Hãy tham gia vào group học lập trình web để tham gia thảo luận và đặt câu hỏi, với hơn 20.000 thành viên hiện đang hoạt động tại group này. Ngoài ra bạn cũng có thể đặt câu hỏi nếu cần tư vấn về các vấn đề như định hướng nghề nghiệp, những khó khăn trong quá trình học tập.

Hỗ trợ việc làm: Hãy tham gia vào group việc làm công nghệ thông tin để tìm và đăng tuyển lập trình viên. Hy vọng đây sẽ là nơi tìm kiếm việc làm lý tưởng cho bạn và nhà tuyển dụng.