問題描述
我是新來的 wordpress,因此面臨一些問題。
用例情況如下:
-
使用者顯示申請表以在他的學校開始一個俱樂部。
-
使用者填寫表單並點選’Submit’ 按鈕。
-
表格需要驗證。
-
如果驗證成功,則資料儲存在資料庫中的自定義表
club_details中,使用者將顯示一些訊息 (例如:感謝提交,您的應用程式將傳送給管理員批准) 否則向使用者顯示相應的錯誤訊息。 -
管理員到 Wordpress 管理面板批准俱樂部的待處理請求。 (資料從 db 獲取並顯示給管理員) 。
我做了以下工作:
-
因為 1) 我已經使用 Wordpress HTML 編輯器建立了一個應用程式表單/頁面。
-
為 3) 我有一個 javascript 檔案 (
validation.js) 具有驗證碼。 -
為 4) 我有一個 php 檔案 (
club-functions.php) 具有函式storeInDB()儲存在 db 中的自定義表中的應用程式詳細資訊。 -
為 5) 我已經建立了我自己的外掛資料夾,並新增了一個 php 檔案 (
club.php),顯示應用程式詳細資訊到 Wordpress 管理面板上的管理員。
我被困在以下位置:如何處理表單提交。我應該在哪裡放置呼叫 javascript 的 validate 函式的程式碼,然後呼叫 storeInDB()函式。
請給我一些關於如何實現這一點的建議,這個方法好嗎?非常感謝。
最佳解決方案
您應該使用 wp_ajax 或 wp_ajax_nopriv 功能。
首先你應該把 admin ajax 的 url 作為 action 屬性值。
<form id="" action="<?php echo admin_url('admin-ajax.php'); ?>" method="post" class="form" >
這樣,表單將預設提交給 admin-ajax.php(不帶 JavaScript) 。您可以使用 JavaScript 使其使用 AJAX 工作。
接下來是將使用提交的資料的功能。在表單中,放置一個 wp_nonce_field 和帶有名稱操作的隱藏輸入。我的動作值是 add_transfer 。
<?php wp_nonce_field('add_transfer','security-code-here'); ?>
<input name="action" value="add_transfer" type="hidden">
你可以把函式處理這個表單在 functions.php 或你的外掛檔案中。您可以使用 wp_ajax_ +操作名稱,如果這僅是登入使用者的表單。對於非登入使用者,請改用 wp_ajax_nopriv +操作名稱。
add_action('wp_ajax_add_transfer', 'process_add_transfer');
function process_add_transfer() {
if ( empty($_POST) || !wp_verify_nonce($_POST['security-code-here'],'add_transfer') ) {
echo 'You targeted the right function, but sorry, your nonce did not verify.';
die();
} else {
// do your function here
wp_redirect($redirect_url_for_non_ajax_request);
}
參考文獻
注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。