WordPress admin_post_{$action} 钩子的作用和使用说明

发布于:
更新时间:2024-11-13

在开发WordPress主题或插件时,我们经常需要添加一些自定义操作,比如我们创建了一个表单,需要提交数据到后端,WordPress为我们提供了admin_post_{$action}钩子来方便我们实现这个后端。

插件说明

钩子名称的动态部分$action 指的是给定的请求操作。

使用方法和示例

这个钩子允许我们为自己的自定义 GET 和 POST 请求创建自定义处理程序。admin_post_ 格式为 “admin _post_$action“,其中 $action 是 GET 或 POST 请求的「操作」参数。

使用方法

如果我们需要为「add_foobar」操作请求创建一个请求或表单处理程序,你可以创建这样的钩子:

add_action( 'admin_post_add_foobar', 'prefix_admin_add_foobar' );

function prefix_admin_add_foobar() {
    // 处理请求后,使用echo生成响应或离开PHP使用HTML
}

使用上面的示例,只要向 WordPress 发送 GET 或 POST 请求,且请求的 “操作“参数设置为「add_foobar」,该钩子就会自动执行。例如下面的HTML中的操作,当用户点击 “提交 “时,上面的钩子将会被执行。

<a href="http://www.example.com/wp-admin/admin-post.php?action=add_foobar&data=foobarid">提交</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>

注:数据值(foobarid)可在钩子函数中的 $_GET$_POST $_REQUEST 数组中可用。

使用示例

以下示例允许你钩子上述 html 中的 GET 或 POST 请求。

add_action( 'admin_post_add_foobar', 'prefix_admin_add_foobar' );

// 这个钩子允许未登录用户提交数据
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.");
}

有了钩子,我们就可以很方便在的在后台处理表单提交过来的请求了,这个Hook 类似 wp_ajax_($action) 钩子,不同的是 wp_ajax_($action) 钩子会在我们自定义回调的基础上附加一些处理,如,设置DOING_AJAX常量等。

我们提供 WordPress主题和插件定制开发服务

本站长期承接 WordPress主题、插件、基于 WooCommerce 的商店商城开发业务。 我们有 10 年WordPress开发经验,如果你想 用WordPress开发网站, 请联系微信: iwillhappy1314,或邮箱: amos@wpcio.com 咨询。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

*