admin-post.php
就像一个处理请求的穷人控制器。
它很有用,因为您不需要在其他钩子上处理您的请求,例如init
并检查超全局上是否存在特殊键,如:
function handle_request() {
if ( !empty($_POST[\'action\']) && $_POST[\'action\'] === \'xyz\' ) {
//do business logic
}
}
add_action(\'init\', \'handle_request\');
而是使用admin post。php允许您指定一个回调函数,该函数将始终在任何提供与提供给动作的后缀匹配的动作值的请求上调用。
function handle_request() {
//do business logic here...
}
add_action( \'admin_post_handle_request\', \'handle_request\' );
add_action( \'admin_post_nopriv_handle_request\', \'handle_request\' );
在上面的示例中,我们可以放弃检查
!empty($_POST[\'action\']) && $_POST[\'action\'] === \'xyz\'
因为在这一点上,我们已经处理好了。
这是指定操作参数和值并将所述值过帐到admin-post.php
URL。
此外,有益的是admin-post.php
处理两个$_POST
和$_GET
因此,当然,除非您想进行更复杂的处理,否则没有必要检查请求是哪种方法。
底线:
它使用起来很安全,只是名字让你很反感。
顺便说一下,你还应该记住wp_redirect()
用户根据请求返回到可接受的位置admin-post.php
将只返回一个白色屏幕作为其响应。