Thêm trường dữ liệu (custom field) cho bài viết [NEW]



Một trong những tính năng mạnh mẽ trong WordPress có thể giúp các nhà phát triển thêm nhiều tính năng thú vị trong các bài viết WordPress là tính năng Trường tùy chỉnh. Hầu hết chúng ta ngày nay không sử dụng các trường tùy chỉnh một mình, nhưng việc hiểu các trường tùy chỉnh là nền tảng quan trọng để sau này học thêm Meta Box hoặc các plugin phổ biến như Advanced Custom Field.

Trường tùy chỉnh là gì?

Tóm lại, đó là một dữ liệu phụ để thêm vào các bài viết (Post, Page). Tức là chúng ta có thể thêm một cột dữ liệu trong mỗi bài viết để nó mang một giá trị tương ứng. Ví dụ: theo mặc định, WordPress chỉ hỗ trợ nhập tiêu đề bài đăng, nhưng với Trường tùy chỉnh, bạn có thể thêm trường dữ liệu kiểu như Tiêu đề phụ.

Hướng dẫn ứng dụng trường tùy chỉnh

Các bạn vào đi Bài đăng -> Thêm mới và nhìn xuống để xem khung Trường tùy chỉnh này.

Thêm trường dữ liệu (custom field) cho bài viết [NEW]

Nếu không thấy, hãy tra cứu và bấm vào chữ Tùy chọn màn hình và đánh dấu Trường tùy chỉnh.

Hướng dẫn cho các trường tùy chỉnh trong WordPressBây giờ hãy thử thêm Khóa Meta (tên trường) với Giá trị (giá trị của trường) như sau:

Thêm trường tùy chỉnh và giá trị của nó vào bài đăng

Thêm trường tùy chỉnh và giá trị của nó vào bài đăng

Sau khi thêm nhớ bấm nút Thêm trường tùy chỉnh.

Trong đó,

  • tp_country : Là tên đại diện cho lĩnh vực của bạn.
  • Sweden : Giá trị của trường.

Ok, vậy là chúng ta đã khai báo xong meta key và giá trị của nó.

Dữ liệu trường tùy chỉnh được lưu trữ ở đâu?

Dữ liệu từ trường tùy chỉnh sẽ được lưu dưới dạng Siêu dữ liệu bài đăng và nằm trong bảng wp_postmeta trong cơ sở dữ liệu (xem trang cuối).

wordpress-custom-field-databaseTrong đó, bạn sẽ thấy tên khóa (meta_key), ID của bài đăng (post_id) và giá trị của nó (meta_value). Và khi bạn sử dụng trường này cho nhiều bài viết khác nhau, nó cũng sẽ có nhiều hàng dữ liệu hơn với cùng một meta_key nhưng post_id khác nhau.

Các hàm hiển thị giá trị trường tùy chỉnh

Nếu bạn muốn lấy giá trị của một trường nào đó trong bài viết để hiển thị ra bên ngoài (như mẫu single.php chẳng hạn), bạn có thể sử dụng nhiều hàm khác nhau.

get_post_meta ()

Hàm này phù hợp để sử dụng nếu bạn cần lấy giá trị của một trường nhất định dựa trên ID bài đăng có chứa trường đó.

Sử dụng: get_post_meta( $post, $meta_key, $single )

Trong đó,

  • $post: Là ID của bài đăng để lấy trường tùy chỉnh.
  • $meta_key: tên khóa của trường cần lấy trong bài viết. Theo mặc định, tất cả các trường trong bài đăng sẽ được truy xuất.
  • $single: Tùy chọn hiển thị một giá trị hoặc một mảng giá trị. Mặc định là false (mảng hiển thị).

Ví dụ: tôi muốn hiển thị giá trị của trường tp_country Trong bài viết hiện tại, chúng ta sẽ đặt đoạn mã sau vào single.php (có thể đặt trong bất kỳ mẫu nào khác, miễn là lấy được ID của bài viết để lấy trường).


        <?php
            $tp_country = get_post_meta( $post->ID, ‘tp_country’, true );
            
            if( $tp_country ) { // kiểm tra xem nó có dữ liệu hay không
                echo ‘Country: ‘ . $tp_country . ‘</br>’;
            }
        ?>

the_meta ()

Nếu bạn chỉ cần in ra đầy đủ meta key và meta value của tất cả các trường có trong bài viết và hiển thị dưới dạng danh sách trong HTML thì hãy sử dụng hàm này, hàm này không cần tham số, sử dụng như là một thẻ mẫu.

get_post_custom ()

Chức năng này phù hợp nếu bạn cần lấy toàn bộ khóa meta và giá trị meta của bài đăng hiện tại (hoặc bất kỳ bài đăng nào dựa trên ID), kết quả là một mảng lồng nhau.

Sử dụng: get_post_custom( $post_id )

Nếu $ post_id không được khai báo thì nó sẽ lấy ID của bài viết hiện tại.


        <?php
            $tp_field = get_post_custom();
            
            echo ‘<pre>’;
            print_r( $tp_field );
            echo ‘</pre>’;
            
        ?>

Ngoài các chức năng trên, có get_post_custom_values ​​()get_post_custom_keys () nhưng mình thấy nó không phổ biến lắm vì chỉ cần 3 chức năng trên là rất linh hoạt.

Các hàm hoạt động với các trường tùy chỉnh

Ngoài hiển thị, bạn cũng có thể sử dụng một số chức năng riêng để hỗ trợ thêm, sửa hoặc xóa các trường tùy chỉnh trong cơ sở dữ liệu mà không cần thao tác thông qua chỉnh sửa bài viết. Thông thường, các chức năng này rất hữu ích khi bạn sử dụng chúng trong các hook hành động của WordPress.

update_post_meta ()

Đây là chức năng sử dụng nếu bạn cần cập nhật giá trị mới trong khóa meta và nếu khóa meta cần cập nhật chưa tồn tại cho bài đăng, nó sẽ tự động thêm nó.

Sử dụng: update_post_meta( $post_id, $meta_key, $meta_value, $prev_value )

Trong đó,

  • $post_id : ID của bài viết cần cập nhật key.
  • $meta_key : Tên khóa để cập nhật dữ liệu.
  • $meta_value : Dữ liệu cần cập nhật.
  • $prev_value : Dữ liệu cũ cần được thay đổi thành dữ liệu mới. Không cần nhập vì theo mặc định nếu bạn khai báo $ meta_value thì nó sẽ thay đổi tất cả các giá trị cũ thành mới. Nó sẽ hữu ích nếu một khóa meta có nhiều giá trị khác nhau.

Ví dụ:


// Đổi giá trị ‘tp_country’ của post_id là 15 sang giá trị ‘Viet Nam’
update_post_meta( 15, ‘tp_country’, ‘Viet Nam’ );

Trong chức năng này, bạn có thể xem ví dụ về một ứng dụng có tính năng xem bài viết tuyệt vời.

delete_post_meta ()

Chức năng này sẽ xóa tất cả dữ liệu trong một khóa meta nhất định hoặc xóa giá trị khóa meta. Cách sử dụng tương tự như update_post_meta ().

Cách sử dụng: delete_post_meta( $post_id, $meta_key, $meta_value )

Trong đó,

  • $post_id : ID của bài đăng để xóa trường.
  • $meta_key: Tên của khóa meta cần xóa.
  • $meta_value: Tên của giá trị cần xóa. Nó không bắt buộc, vì theo mặc định, nó sẽ xóa tất cả các giá trị. Nhưng nếu bạn có nhiều giá trị trong một trường thì hãy sử dụng trường này nếu bạn cần giữ các giá trị như bạn muốn.

Ví dụ sử dụng:


// Xoá toàn bộ giá trị trong key ‘tp_country’ của post_id là 15
delete_post_meta( 15, ‘tp_country’, ‘Viet Nam’ );

Phần kết

Như vậy trong bài viết này các bạn đã làm quen với tính năng Custom Fields trong WordPress, và đây là một tính năng cực kỳ thú vị.

Trên thực tế, khi làm việc với các trường tùy chỉnh, ít người làm thủ công như thế này, nhưng họ sẽ kết hợp nó với hộp meta để tạo ra một số khung nhập liệu đẹp mắt dưới khung viết. Nếu bạn muốn tạo, bạn có thể xem hướng dẫn ACF để thực hiện.

4/5 – (1 phiếu bầu)

Tiếp tục đọc trong bộ truyện