Xử lý kết quả từ dữ liệu được nối vào admin_post


9

Tôi đang viết một plugin sử dụng một biểu mẫu để truyền một số dữ liệu cho chính nó.

Có cách nào để làm điều này "The WordPress Way" không?

Mã mẫu biểu mẫu (trên trang menu con tùy chỉnh được thêm trong "Công cụ"):

<form action="<?php echo get_admin_url() . 'admin-post.php'; ?>" method="post">
    <input name="some_input" type="text">
    <input name="other_input" type="text">
</form>

Sau đó, về phía logic của plugin:

function my_process_form_data() {
    // Process the form data here and return the results
}
add_action( 'admin_post', 'my_process_form_data' );

Bây giờ tôi đã xử lý biểu mẫu và có dữ liệu kết quả (được lưu trữ dưới dạng một mảng lớn), cách tốt nhất để trả lại dữ liệu đó cho trang menu con tùy chỉnh mà tôi đã tạo là gì?

Tôi hiểu có một vài lựa chọn:

  • Thay vì đăng lên "admin-post.php", tôi có thể đăng trực tiếp lên trang. Nhưng điều này làm cho một số mã lộn xộn và các điều kiện (nghĩa là nếu kết quả, tải cái này, cái khác, tải cái này. Tốt nhất là nên tạo khuôn mẫu và logic.
  • Sử dụng wp_redirect và lưu trữ dữ liệu trong URL mà nó đang chuyển hướng đến. Nhưng tôi có một mảng lớn dữ liệu để trả về cho người dùng cuối, vì vậy đây không thực sự là một lựa chọn.
  • Tuần tự hóa dữ liệu và lưu trữ tạm thời trong cơ sở dữ liệu, thông qua các quá trình hoặc tùy chọn, bỏ đặt dữ liệu trong db khi người dùng đã nhìn thấy nó. Nhưng điều này cảm thấy rất 'hackish'.

Có gợi ý nào để đưa mảng dữ liệu lớn này trở lại trang menu con tùy chỉnh của tôi "theo cách WordPress" không?


Bạn có thể thêm hành động tùy chỉnh dưới dạng admin_post_myaction và sau đó thêm hành động trường ẩn = myaction vào biểu mẫu của bạn. Vấn đề duy nhất là làm thế nào để hiển thị lại biểu mẫu nếu có lỗi (tiếng vang chỉ trả về nội dung mà không có bảng điều khiển thực tế).
FrEaKmAn

1
Xem câu trả lời của tôi bằng cách sử dụng tạm thời tại đây: [1]: wordpress.stackexchange.com/a/203359/6593
mos tôn sùng

Nếu bạn sử dụng một nonce, bạn có thể gọi $ _POST ('_ wp_http_Vferer') để lấy url của biểu mẫu, sau đó wp_safe_redirect và add_query_arg để trả về trạng thái và dữ liệu. Xem câu trả lời đầy đủ của tôi ở đây wordpress.stackexchange.com/a3534269/84702
juananruiz

Câu trả lời:


1

Cách WordPress để làm điều này là bằng cách không sử dụng admin_posthook. Vì câu hỏi này đã được hỏi im lặng một lúc trước, tôi tự hỏi liệu sau đó có sẵn tùy chọn không.

Dù sao, bạn nên tạo một trang cài đặt tùy chỉnh . Hãy xem ví dụ đầy đủ trong bài được liên kết. Bạn sẽ phải tạo một cuộc gọi lại cho từng lĩnh vực.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.