在開發(fā)WordPress主題或插件時(shí),我們經(jīng)常需要添加一些自定義操作,比如我們創(chuàng)建了一個(gè)表單,需要提交數(shù)據(jù)到后端,WordPress為我們提供了admin_post_{$action}鉤子來方便我們實(shí)現(xiàn)這個(gè)后端。
插件說明
鉤子名稱的動態(tài)部分$action 指的是給定的請求操作。
使用方法和示例
這個(gè)鉤子允許我們?yōu)樽约旱淖远x GET 和 POST 請求創(chuàng)建自定義處理程序。admin_post_ 格式為 “admin _post_$action“,其中 $action 是 GET 或 POST 請求的「操作」參數(shù)。
使用方法
如果我們需要為「add_foobar」操作請求創(chuàng)建一個(gè)請求或表單處理程序,你可以創(chuàng)建這樣的鉤子:
add_action( 'admin_post_add_foobar', 'prefix_admin_add_foobar' );
function prefix_admin_add_foobar() {
// 處理請求后,使用echo生成響應(yīng)或離開PHP使用HTML
}
使用上面的示例,只要向 WordPress 發(fā)送 GET 或 POST 請求,且請求的 “操作“參數(shù)設(shè)置為「add_foobar」,該鉤子就會自動執(zhí)行。例如下面的HTML中的操作,當(dāng)用戶點(diǎn)擊 “提交 “時(shí),上面的鉤子將會被執(zhí)行。
<a >提交</a>
<form action="http://www.example.com/wp-admin/admin-post.php" method="post"> <input type="hidden" name="action" value="add_foobar"> <input type="hidden" name="data" value="foobarid"> <input type="submit" value="Submit"> </form>
注:數(shù)據(jù)值(foobarid)可在鉤子函數(shù)中的 $_GET、$_POST 或 $_REQUEST 數(shù)組中可用。
使用示例
以下示例允許你鉤子上述 html 中的 GET 或 POST 請求。
add_action( 'admin_post_add_foobar', 'prefix_admin_add_foobar' );
// 這個(gè)鉤子允許未登錄用戶提交數(shù)據(jù)
add_action( 'admin_post_nopriv_add_foobar', 'prefix_admin_add_foobar' );
function prefix_admin_add_foobar() {
status_header(200);
//request handlers should exit() when they complete their task
exit("Server received '{$_REQUEST['data']}' from your browser.");
}
有了鉤子,我們就可以很方便在的在后臺處理表單提交過來的請求了,這個(gè)Hook 類似 wp_ajax_($action) 鉤子,不同的是 wp_ajax_($action) 鉤子會在我們自定義回調(diào)的基礎(chǔ)上附加一些處理,如,設(shè)置DOING_AJAX常量等。
