Trang chủ WordpressWordpress Development [Contact Form 7] Tự lấy giá trị trong bài viết đưa vào form

[Contact Form 7] Tự lấy giá trị trong bài viết đưa vào form

bởi Thạch Phạm
9 bình luận 3821 views
Khuyến mãi hosting
Lấy giá trị trong bài viết đưa vào form

Form tự điền title của bài viết

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 fieldDynamic Text Hidden field, chính là em.

Dynamic Text của Contact Form 7

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.

Tạo dynamic text field

Ở 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. 😀

Lấy giá trị từ phương thức POST trong PHP

Ví dụ mình có 2 biến $_POST["name"] để 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

Chèn shortcode vào Dynamic value

Chèn shortcode vào Dynamic value

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ó…

Lấy giá trị trong bài viết đưa vào form

Form tự điền title của bài viết

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.

9 bình luận

Có thể bạn quan tâm

9 bình luận

Nguyễn Minh Sơn 06/08/2020 - 6:27 Chiều

Thạch ơi! Mình muốn lấy tên chuyên mục của bài viết đưa vào form thì dùng biết nào được bạn?

Reply
Hồn Đá Việt 07/06/2017 - 9:30 Chiều

Thạch cho mình hỏi mình muốn lấy URL của post hiện tại thì dùng tham số như thế nào nhỉ?

Reply
tính 21/04/2017 - 9:53 Sáng

Em muốn lấy toàn bộ category bài viết bỏ vào contact form thì làm thế nào ạ

Reply
Kiên 01/04/2017 - 3:18 Chiều

Thạch ơi cho mình hỏi chút!
Mình đang làm 1 trang giới thiệu sản phẩm theo dạng project và tin tức ngoài trang chủ, không có cài woo. Mình có làm nút đặt hàng ở dưới sản phẩm luôn nhấn vô đó thì nó show lên contact fomr 7. Giờ mình muốn lấy cái tên sản phẩm đó vào fomr luôn thì lấy sao nhỉ. Mình đang để lấy theo tên bài viết nhưng mà cái này chỉ khi vào trong trang chi tiết mới lấy được, còn ngoài trang chủ thì không lấy được. :(. Thạch xem giúp mình với, hiện tại mình chưa tìm ra hướng giải quyết.
Web mình đang làm đây ạ. Cám ơn Thạch nhiều.
http://yte.skywebvn.com/hebacen/

Reply
Ngô Đức Hiếu 21/12/2016 - 10:03 Chiều

Custom field của mình dạng repeater thì làm sao để lấy đc Thạch nhỉ

Reply
Tuấn Anh 11/12/2016 - 4:06 Chiều

Thạch Phạm giúp mình 1 chut
mình muốn hiện thời gian ngày tháng hôm nay trong phần form và in vào data thì làm thế nào
vì trong data cua plugin này nó lưu time dạng strtotime
mình gặp khó khăn khi show ra và so sánh với 1 table visit khác

Reply
Thanh Chính 21/07/2016 - 2:34 Chiều

Mình muốn lấy tiêu đề sản phẩm trang giới thiệu sang nó thì phải làm thế nào ạ thay vì CF7_referrer nó chỉ lấy url của trang trước nó thôi mình muốn lấy tiêu đề của nó chứ không phải url như thế có cách nào lấy được không ạ.
Chẳng hạn mình trang sản phẩm kích mua ngay nó sẽ đến trang liên hệ làm sao để get tên sản phẩm trang sản phẩm lên form trong trang liên hệ vậy bạn

Reply
Thạch Phạm 23/07/2016 - 6:29 Sáng

Bạn dùng [CF7_get_post_var key='post_title'] nhé, trong bài mình có đề cập rồi. Tuy nhiên bạn không thể dùng cách này nếu form liên hệ nằm ở một trang khác.
Còn nếu bạn muốn qua trang khác thì chắc phải code lại nút thêm giỏ hàng để làm sao khi click vào nó sử dụng phương thức POST mang tiêu đề của trang hiện tại qua bên trang liên hệ và sau đó là dùng shortcode [dynamictext dynamicname "CF7_POST key='foo'"].

Reply
Thanh Chính 25/07/2016 - 9:39 Sáng

ok mình cảm ơn nhé. Để mình tìm hiểu cách 2 xem sao

Reply

Để lại một bình luận

* Khi bình luận, bạn đồng ý rằng thông tin bạn nhập vào bao gồm tên, email và địa chỉ IP sẽ được lưu giữ tại website.