Hiển thị post có custom field trong WordPress

6 tháng ago, WordPress Themes, Views
Hiển thị post có custom field trong WordPress

Giới thiệu về Custom Fields trong WordPress

WordPress, một nền tảng quản lý nội dung (CMS) phổ biến, cho phép người dùng tạo và quản lý các trang web một cách dễ dàng. Tuy nhiên, đôi khi, bạn cần lưu trữ thông tin bổ sung mà các trường mặc định của WordPress không cung cấp. Đây là lúc Custom Fields (Trường Tùy Biến) trở nên hữu ích. Custom Fields cho phép bạn thêm các trường dữ liệu bổ sung vào bài viết, trang hoặc loại bài viết tùy chỉnh (Custom Post Types) của bạn.

Ví dụ, nếu bạn đang xây dựng một trang web về bất động sản, bạn có thể muốn lưu trữ thông tin như giá, địa chỉ, số lượng phòng ngủ và phòng tắm cho mỗi bất động sản. Thay vì cố gắng nhồi nhét thông tin này vào nội dung chính của bài viết, bạn có thể sử dụng Custom Fields để lưu trữ chúng một cách có cấu trúc và dễ dàng truy xuất.

Các Phương Pháp Hiển Thị Custom Fields trong WordPress

Có nhiều cách khác nhau để hiển thị Custom Fields trong WordPress, tùy thuộc vào nhu cầu và kỹ năng của bạn. Dưới đây là một số phương pháp phổ biến:

  • Sử dụng hàm `get_post_meta()`: Đây là phương pháp cơ bản nhất, sử dụng hàm PHP tích hợp sẵn của WordPress để lấy giá trị của Custom Fields.
  • Sử dụng Plugins: Có nhiều plugins miễn phí và trả phí giúp bạn dễ dàng tạo và hiển thị Custom Fields mà không cần viết code.
  • Sử dụng Custom Templates: Bạn có thể tạo các template tùy chỉnh để hiển thị Custom Fields theo cách bạn muốn.

Sử Dụng Hàm `get_post_meta()`

Hàm `get_post_meta()` là một hàm PHP mạnh mẽ cho phép bạn truy xuất giá trị của bất kỳ Custom Field nào được liên kết với một bài viết cụ thể. Cú pháp của hàm như sau:


    get_post_meta( $post_id, $key, $single );
  
  • `$post_id`: ID của bài viết mà bạn muốn lấy Custom Field.
  • `$key`: Tên của Custom Field bạn muốn lấy giá trị.
  • `$single`: (Tùy chọn) Nếu được đặt thành `true`, hàm sẽ trả về một giá trị duy nhất. Nếu được đặt thành `false` (hoặc bỏ qua), hàm sẽ trả về một mảng các giá trị.

Ví dụ, giả sử bạn có một Custom Field tên là `gia_nha` lưu trữ giá của một ngôi nhà. Bạn có thể hiển thị giá này trong template bài viết của bạn như sau:


    <?php
    $gia = get_post_meta( get_the_ID(), 'gia_nha', true );
    if ( $gia ) {
      echo '<p>Giá nhà: ' . esc_html( $gia ) . '</p>';
    }
    ?>
  

Trong đoạn code này:

  • `get_the_ID()` trả về ID của bài viết hiện tại.
  • `’gia_nha’` là tên của Custom Field.
  • `true` cho biết rằng chúng ta muốn lấy một giá trị duy nhất.
  • `esc_html()` được sử dụng để ngăn chặn tấn công XSS bằng cách mã hóa các ký tự HTML đặc biệt.

Sử Dụng Plugins để Quản Lý và Hiển Thị Custom Fields

Có rất nhiều plugins hữu ích để quản lý và hiển thị Custom Fields trong WordPress. Một số plugins phổ biến bao gồm:

  • Advanced Custom Fields (ACF): Một plugin mạnh mẽ và linh hoạt cho phép bạn tạo các Custom Fields phức tạp với nhiều loại trường khác nhau.
  • Meta Box: Một plugin nhẹ và dễ sử dụng để tạo Custom Fields.
  • Pods: Một plugin cho phép bạn tạo Custom Post Types và Custom Fields một cách dễ dàng.

Những plugin này cung cấp giao diện người dùng thân thiện để tạo và quản lý Custom Fields, cũng như các hàm và shortcodes để hiển thị chúng trong template của bạn.

Ví dụ, với Advanced Custom Fields (ACF), bạn có thể tạo một Custom Field tên là `dien_tich` (diện tích) cho loại bài viết “Bất động sản”. Sau đó, bạn có thể sử dụng hàm `get_field()` của ACF để lấy giá trị của trường này và hiển thị nó trong template của bạn:


    <?php
    $dien_tich = get_field('dien_tich');
    if( $dien_tich ): ?>
        <p>Diện tích: <?php echo esc_html( $dien_tich ); ?> m²</p>
    <?php endif; ?>
  

Sử Dụng Custom Templates để Hiển Thị Custom Fields

Nếu bạn muốn có toàn quyền kiểm soát cách Custom Fields được hiển thị, bạn có thể tạo các template tùy chỉnh. Điều này đòi hỏi một chút kiến thức về PHP và cấu trúc template của WordPress.

Đầu tiên, bạn cần xác định template nào mà bạn muốn chỉnh sửa. Ví dụ, bạn có thể muốn chỉnh sửa template `single.php` để thay đổi cách hiển thị các bài viết đơn lẻ.

Sau đó, bạn có thể sao chép template này và tạo một bản sao với tên khác, ví dụ như `single-bat-dong-san.php` (nếu bạn đang làm việc với loại bài viết tùy chỉnh “Bất động sản”). WordPress sẽ tự động sử dụng template này để hiển thị các bài viết thuộc loại “Bất động sản”.

Trong template tùy chỉnh của bạn, bạn có thể sử dụng hàm `get_post_meta()` hoặc các hàm của plugins như ACF để lấy và hiển thị giá trị của Custom Fields.

Ví dụ, trong `single-bat-dong-san.php`, bạn có thể thêm đoạn code sau để hiển thị các Custom Fields `gia_nha`, `dia_chi`, và `so_phong_ngu`:


    <?php
    $gia_nha = get_post_meta( get_the_ID(), 'gia_nha', true );
    $dia_chi = get_post_meta( get_the_ID(), 'dia_chi', true );
    $so_phong_ngu = get_post_meta( get_the_ID(), 'so_phong_ngu', true );

    if ( $gia_nha ) {
      echo '<p>Giá nhà: ' . esc_html( $gia_nha ) . '</p>';
    }

    if ( $dia_chi ) {
      echo '<p>Địa chỉ: ' . esc_html( $dia_chi ) . '</p>';
    }

    if ( $so_phong_ngu ) {
      echo '<p>Số phòng ngủ: ' . esc_html( $so_phong_ngu ) . '</p>';
    }
    ?>
  

Lời Khuyên và Lưu Ý Khi Sử Dụng Custom Fields

Dưới đây là một số lời khuyên và lưu ý khi sử dụng Custom Fields trong WordPress:

  • **Lựa chọn phương pháp phù hợp:** Chọn phương pháp phù hợp nhất với kỹ năng và nhu cầu của bạn. Nếu bạn không quen thuộc với PHP, hãy sử dụng plugins. Nếu bạn muốn có toàn quyền kiểm soát, hãy sử dụng custom templates.
  • **Sử dụng tên Custom Fields rõ ràng:** Chọn tên Custom Fields dễ hiểu và mô tả rõ ràng dữ liệu mà chúng lưu trữ. Điều này giúp bạn dễ dàng quản lý và bảo trì trang web của bạn trong tương lai.
  • **Sử dụng hàm `esc_html()`:** Luôn sử dụng hàm `esc_html()` để mã hóa dữ liệu Custom Fields trước khi hiển thị chúng trên trang web của bạn. Điều này giúp ngăn chặn các cuộc tấn công XSS.

Kết luận

Custom Fields là một công cụ mạnh mẽ để mở rộng khả năng của WordPress và tùy chỉnh trang web của bạn theo nhu cầu cụ thể. Bằng cách sử dụng Custom Fields, bạn có thể lưu trữ và hiển thị thông tin bổ sung cho bài viết, trang và Custom Post Types của bạn, tạo ra trải nghiệm người dùng tốt hơn và quản lý nội dung hiệu quả hơn. Cho dù bạn chọn sử dụng hàm `get_post_meta()`, plugins hay custom templates, việc hiểu và sử dụng Custom Fields sẽ giúp bạn xây dựng một trang web WordPress mạnh mẽ và linh hoạt.