WordPress admin_post_{$action} 鉤子的作用和使用說明

發(fā)布于:
更新時(shí)間:2025-04-22

本文詳細(xì)介紹了WordPress中的admin_post_{$action}鉤子,解釋了其作用和動態(tài)部分$action的含義。通過示例代碼展示了如何為自定義GET和POST請求創(chuàng)建處理程序,并提供了HTML表單示例,幫助開發(fā)者在后臺處理表單提交請求。

在開發(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常量等。

我們提供 WordPress主題和插件定制開發(fā)服務(wù)

本站長期承接 WordPress主題、插件、基于 WooCommerce 的商店商城開發(fā)業(yè)務(wù)。 我們有 10 年WordPress開發(fā)經(jīng)驗(yàn),如果你想 用WordPress開發(fā)網(wǎng)站, 請聯(lián)系微信: iwillhappy1314,或郵箱: [email protected] 咨詢。

發(fā)表回復(fù)

您的郵箱地址不會被公開。 必填項(xiàng)已用 * 標(biāo)注

*