Ví dụ thêm custom field cho bài viết wordpress

Ví dụ thêm custom field cho bài viết wordpress là vấn đề được nhiều lập trình viên quan tâm, bởi những kiến thức trên trường lớp là không đủ, vì vậy bài Ví dụ thêm custom field cho bài viết wordpress sẽ chia sẻ tới bạn nhiều thông tin hữu ích

Mọi người vẫn hỏi tôi về việc học lập trình nói chung và Wordpress nói riêng có cần năng khiếu hay quá khó để tiếp cận hay không. Thì tôi có thể trả lời rằng, học lập trình cũng như việc bạn học tiếng Anh hay bất kỳ một ngôn ngữ khác, bởi lập trình...là ngôn ngữ của máy tính, để máy tính đọc và máy tính thực hiện theo yêu cầu của mình, bạn thích là học được.

Một trong số các tính năng mạnh mẽ trong WordPress có thể giúp các lập trình viên có thể thêm nhiều tính năng hay trong các bài viết trong WordPress, đó là tính năng Custom Field. Hầu hết hiện nay chúng ta không sử dụng custom field độc lập nhưng hiểu custom field là nền tảng quan trọng để sau này bạn tìm hiểu thêm Meta Boxes hoặc các plugin thông dụng như Advanced Custom Field.

Custom Field là gì?

Giải thích ngắn gọn thì đó là một dữ liệu bổ sung để thêm vào các bài viết (Post, Page). Nghĩa 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ụ như mặc định WordPress chỉ hỗ trợ nhập tiêu đề bài viết, nhưng với Custom Field bạn có thể thêm một trường dữ liệu kiểu như Tiêu đề phụ chẳng hạn.

Hướng dẫn ứng dụng Custom Field

Các bạn vào Posts -> Add New và nhìn xuống dưới sẽ thấy cái khung Custom Field này.

Nếu không thấy thì các bạn nhìn tít lên trên, bấm vào chữ Screen Options và tick dấu vào Custom Field.

Bây giờ các bạn thử thêm Meta Key (tên địa diện của field) với Value (giá trị của field) như sau:

Thêm custom field và giá trị của nó vào bài

Thêm xong nhớ ấn nút Add Custom Field.

Trong đó,

  • tp_country : Là tên đại diện của field của bạn.
  • Sweden : Giá trị của field.

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

Dữ liệu custom field lưu vào đâu?

Các dữ liệu từ custom field sẽ được lưu lại thành các Post Metadata và nằm trong bảng wp_postmeta trong database (xem ở các trang cuối).

Trong đó, bạn sẽ thấy tên key (meta_key), ID của bài viết chưa key (post_id) và giá trị của nó (meta_value). Và khi bạn dùng field này cho nhiều bài viết khác nhau thì nó cũng sẽ có thêm nhiều hàng dữ liệu có meta_key giống nhau nhưng sẽ có post_id khác nhau.

Các hàm hiển thị giá trị custom field

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

get_post_meta()

Hàm này thích hợp sử dụng nếu bạn cần lấy giá trị của một field nào đó dựa vào Post ID đang chứa field.

Cách sử dụng: get_post_meta( $post, $meta_key, $single )

Trong đó,

  • $post: Là ID của bài viết cần lấy custom field.
  • $meta_key: tên key của field cần lấy trong bài viết. Mặc định sẽ lấy toàn bộ field có trong post.
  • $single: Tuỳ chọn hiển thị một giá trị hay một mảng giá trị. Mặc định là false (hiển thị mảng).

Ví dụ mình muốn hiển thị giá trị của field tp_country trong bài hiện tại thì sẽ đặt đoạn code sau vào single.php (có thể đặt ở các template khác bất kỳ, miễn là lấy được ID của bài viết cần lấy field).

<?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 cần đơn giản là in ra toàn bộ meta key và meta value của tất cả các field có trong bài viết và hiển thị dưới dạng danh sách bằng HTML thì sẽ sử dụng hàm này, hàm này không có tham số, sử dụng như là một template tags.

get_post_custom()

Hàm này thích hợp nếu bạn cần lấy ra toàn bộ meta key và meta value của bài viết hiện tại (hoặc bài viết bất kỳ dựa vào ID), kết quả trả về là dạng mảng lồng nhau.

Cách 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 hàm trên thì còn có get_post_custom_values() và get_post_custom_keys() nhưng mình thấy nó không thông dụng cho lắm vì chỉ cần 3 hàm ở trên là đã rất linh hoạt rồi.

Các hàm thao tác với custom field

Ngoài việc hiển thị ra, bạn cũng có thể sử dụng một số hàm riêng biệt để hỗ trợ thêm, sửa hoặc xoá custom field trong database mà không cần thao tác thông qua việc sửa bài viết. Thông thường các hàm này sẽ có ích khi bạn dùng nó trong các action hook của WordPress.

update_post_meta()

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

Cách 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 key cần cập nhật dữ liệu.
  • $meta_value : Dữ liệu cần cập nhật vào.
  • $prev_value : Dữ liệu cũ cần thay đổi thành dữ liệu mới. Không bắt buộc phải nhập vì mặc định nếu bạn khai báo $meta_value thì nó sẽ đổi tất cả các giá trị cũ thành mới. Sẽ có ích nếu một meta key 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' ); 

Ở hàm này, bạn có thể xem ví dụ ứng dụng làm tính năng lượt xem bài viết rất hay.

delete_post_meta()

Hàm này sẽ xoá toàn bộ dữ liệu trong một meta key nào đó hoặc xoá giá trị meta key. Cách sử dụng tương tự như update_post_meta().

Cách dùng: delete_post_meta( $post_id, $meta_key, $meta_value )

Trong đó,

  • $post_id : ID của bài viết cần xoá field.
  • $meta_key: Tên meta key cần xoá.
  • $meta_value: Tên giá trị cần xoá. Không bắt buộc, vì mặc định nó sẽ xoá toàn bộ giá trị. Nhưng nếu bạn có nhiều giá trị trong một field thì dùng cái này nếu cần giữ lại giá trị theo ý 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' );

Lời kết

Như vậy là trong bài viết này bạn đã làm quen được với tính năng Custom Field trong WordPress, và đây là một tính năng vô cùng thú vị.

Trên thực tế khi làm việc với custom field, ít ai làm thủ công như thế này mà họ sẽ kết hợp với meta box để tạo thêm 1 số khung nhập liệu đẹp mắt dưới khung viết bài. Nếu bạn muốn tạo, có thể xem qua hướng dẫn ACF để làm nhé.

Hy vọng với bài viết về Ví dụ thêm custom field cho bài viết wordpress đã giải đáp giúp bạn phần nào về kiến thức lập trình Wordpress. Như tôi đã nói, ngôn ngữ lập trình không quan trọng bằng tư duy giải thuật, tư duy logic để giải quyết vấn đề.

Với những năm trước đây, lập trình viên là một cái nghề khó và kén chọn người học, đồng nghĩa với việc thu nhập hàng tháng của các lập trình viên luôn cao. Còn những năm gần đây, thì lập trình là môn học phổ thông, và ai cũng nên học một ngôn ngữ lập trình nào đó.

Nếu bạn còn bất kỳ câu hỏi nào trong việc học lập trình online, hãy gửi yêu cầu cho tôi qua email hoidapcode.com@gmail.com hoặc để lại comment bên dưới, tôi sẽ giải đáp trong vòng 24 giờ!

Blog hoidapcode.com là blog được tổng hợp tự động các bài học, thông tin về lập trình trên mạng internet. Nếu bạn có ý kiến hoặc đóng góp về bài viết này, hãy liên hệ với tôi!