Câu hỏi: Mình muốn tạo một form đặt hàng đơn giản để đặt vào bài viết và nó tự lấy tên tiêu đề, giá trị custom post field bỏ vào trong form để khách không cần nhập lại. Vậy phải làm thế nào?
Yeah, câu hỏi này mình cũng gặp nhiều lần rồi và điều đầu tiên mình nghĩ ngay đến đó là sử dụng Contact Form 7 vì plugin này dễ tuỳ biến hơn các plugin khác nếu bạn biết một chút về PHP và cấu trúc các hàm cơ bản WordPress. Tuy nhiên giữa lúc mình đang lọ mọ thử một vài đoạn code để làm việc này thì hôm nay đã có email báo có một plugin chuyên để làm việc này vô cùng dễ dàng, đó là Contact Form 7 – Dynamic Text Extension.
Đây không phải là một plugin chạy độc lập mà nó bắt buộc phải có plugin Contact Form 7 chạy cùng nên trước tiên bạn hãy cài plugin này vào trước và đọc qua Hướng dẫn Contact Form 7 nếu bạn chưa biết về nó.
Tạo field với Dynamic Text để lấy giá trị trong bài
Plugin này có thể get được khá nhiều thứ trong bài viết mà nó được chèn vào như Tiêu đề bài, ID của bài, slug, lấy giá trị từ biến $_POST, lấy giá trị custom field và kể cả từng giá trị của người đăng bài. Chỉ nhiêu đó thôi là bạn đã làm được một đống việc rồi nếu bạn có ý tưởng.
Để ứng dụng được plugin này tối đa, mình nghĩ các bạn nên thuộc những tham số của một số function và object quan trọng trong WordPress như bloginfo()
, $post
, get_post_meta()
.
Sau khi cài đủ 2 plugin mình đã nói phía trên, bạn vào phần tạo form sẽ thấy có thêm một tag tên là Dynamic Text field và Dynamic Text Hidden field, chính là em.
Các bạn tạo nó như bao field khác, tuy nhiên hãy đặc biệt chú trọng phần Dynamic value, đó là trái tim của plugin này.
Ở phần Dynamic value này nghĩa là bạn nhập những shortcode được plugin này hỗ trợ để tự động lấy các giá trị mà mình đã nêu ở đầu bài. Điều đầu tiên mà bạn cần nên biết là khi nhập shortcode vào đây, bạn không cần nhập 2 dấu ngoặc vuông bao quanh [] mà nhập thẳng tên shortcode và giá trị. Mình sẽ hướng dẫn phía dưới.
Các shortcode lấy value của Dynamic Text
Lấy giá trị của từng tham số trong hàm bloginfo()
Hàm này được dùng để in ra một số thông tin chính của website, nó không phụ thuộc vào bài viết hiện tại. Để lấy giá trị, bạn sử dụng shortcode như sau:
CF7_bloginfo show='tham số'
Các bạn thay tham số thành tham số muốn lấy.
Danh sách các tham số của bloginfo().
Lấy giá trị từ phương thức GET trong PHP
Ví dụ mình có URL là https://thachpham.com/contact.php?name=Thach
Bây giờ mình muốn đưa giá trị của tham số name trên URL vào (nghĩa là Thach) thì mình sẽ có shortcode sau.
CF7_GET key='name'
Thế nó lấy URL này ở đâu thế? Là ở cái URL hiện tại trên trình duyệt chứ ở đâu nữa. :D
Lấy giá trị từ phương thức POST trong PHP
Ví dụ mình có 2 biến $_POST
để truyền tên gì đó thì mình sẽ dùng shortcode như sau để lấy giá trị được truyền vào mảng name
kia.
CF7_POST key='name'
Lấy giá trị trong bài viết hiện tại
Shortcode này chúng ta có 2 cách dùng, một là dùng key được mặc định bởi Dynamic Text (mình không biết chính xác là có bao nhiêu key) hoặc là dùng tham số trong object $post
. Hiện tại nó có những giá trị như sau:
$post->post_author $post->post_date $post->post_date_gmt $post->post_content $post->post_content_filtered $post->post_title $post->post_excerpt $post->post_status $post->post_type $post->comment_status $post->ping_status $post->post_password $post->post_name $post->to_ping $post->pinged $post->post_modified $post->post_modified_gmt $post->post_parent $post->menu_order $post->guid
Để lấy giá trị, đầu tiên ta phải dùng shortcode CF7_get_post_var key=’key’. Ví dụ, mình sử dụng tham số của object $post
để lấy tiêu đề bài viết thì mình sẽ có shortcode là CF7_get_post_var key='post_title'
. Tương tự, bạn thay bằng các tham số trong danh sách mình đã ghi phía trên.
Lấy giá trị từ custom post field của bài hiện tại
Đây là điểm bạn nên chú ý vì mình biết nhiều bạn sẽ cần, ví dụ bạn cần lấy giá tiền của sản phẩm trong trang hiện tại chẳng hạn. Ta sẽ có shortcode như sau:
CF7_get_custom_field key='my_custom_field'
Bạn thay my_custom_field bằng slug của custom field mà bạn cần get ra nhé.
Lấy địa chỉ website giới thiệu
Địa chỉ website giới thiệu ở đây nghĩa là địa chỉ website ở trang mà khách đã vào trước đó sau đó ấn vào một liên kết nào đó trên trang dẫn tới trang này. Để lấy giá trị này, bạn sử dụng shortcode ngắn gọn như sau mà không cần sửa gì cả.
CF7_referrer
Và đây là hình ảnh hướng dẫn nhập shortcode
Ok, bước còn lại bây giờ là copy shortcode trong khung màu nâu bỏ vào Form và copy shortcode màu xanh lá bỏ vào Message body như bình thường. Kết quả ta có…
Xong rồi đấy. Nếu bạn chưa hình dung ra tính năng này quan trọng thế nào thì bài tutorial tự làm shop đơn giản trên WordPress mà mình sắp đưa lên sẽ giúp cho bạn có cái nhìn rõ rệt hơn về tính năng này.