Có thể hơi muộn nhưng tôi đã vấp phải điều này khi tôi gặp vấn đề khi tìm ra nó nên nghĩ rằng tôi sẽ cung cấp những gì tôi tìm ra cho những người tương lai.
Tôi đã tìm thấy các nguyên tắc cơ bản là có một đầu vào ẩn được đặt tên action
và giá trị của nó là một định danh bộ tùy chỉnh. Ví dụ
<input name='action' type="hidden" value='custom_form_submit'>
Với đầu vào này, và hành động biểu mẫu của bạn trỏ đến admin-post.php
một hành động có thể được đặt. Chúng tôi thiết lập hành động này bằng cách sử dụng admin_post_custom_form_submit
.
Để làm cho mọi thứ phức tạp hơn, chúng ta có thể sử dụng một wp_nonce_field
thứ mà tôi nghĩ là một thứ bảo mật cơ bản. Về cơ bản, nó thêm một giá trị $ _POST ngẫu nhiên. Đủ công bằng.
Tiếp theo, chúng tôi muốn thiết lập hành động của mình như vậy:
add_action('admin_post_custom_form_submit','our_custom_form_function');
Vì vậy, khi có một biểu mẫu được gửi đến admin-post.php
và có một giá trị hành động của custom_form_submit
hàm our_custom_form_function
sẽ được gọi! : D
function our_custom_form_function(){
//print_r($_POST);
//you can access $_POST, $GET and $_REQUEST values here.
wp_redirect(admin_url('admin.php?page=your_custom_page_where_form_is'));
//apparently when finished, die(); is required.
}
Bây giờ bạn nói bạn nhận được một trang trắng. Điều này là do chúng ta cần chuyển hướng trở lại hình thức của chúng tôi. Tôi đã sử dụng một đơn giảnwp_redirect()
Hy vọng điều này đã có ích :) Tôi sẽ cố gắng tìm ra cách tôi có thể thực hiện một số xác nhận và đưa lỗi trở lại biểu mẫu chuyển hướng của chúng tôi. Tôi nghĩ ý tưởng đơn giản nhất là tạo ra một $_GET
giá trị và thấy rằng trên trang của chúng tôi nhưng nó không tuyệt vời phải không?
Tôi cũng thấy rằng một khi đã gửi $_POST
sẽ bị xóa !! DX Điều này có lẽ là để làm với chuyển hướng. Tôi sẽ có một google và xem những gì tôi có thể tìm thấy: d
Hy vọng điều này đã giúp :)
CẬP NHẬT
Tôi đã thực hiện thêm một số công việc và nhận ra cách thực sự duy nhất để trả về các giá trị là sử dụng biến $ _GET. Bằng cách này bạn có thể nhập lại bất kỳ giá trị bài. Chỉ cần đừng quên sử dụng urlencode()
để đảm bảo rằng các ký tự đặc biệt như '@', v.v.
Tôi đã có nhiều hơn một trang với những gì tôi đang làm việc vì vậy tôi đã thực hiện 2 chuyển hướng khác nhau đến các trang khác nhau và bao gồm các lỗi, v.v. Việc kiểm tra cho họ trên mẫu của tôi.
Một chức năng tiện dụng khác. http_build_request()
có thể biến mảng thành mảng 'url an toàn' để bạn có thể gửi chúng qua các yêu cầu $ _GET, v.v.
admin-post.php
vàadmin_post
hành động, bạn cần chuyển hướng trở lại trang plugin của mình.