wp_ajax_delete_post()
云策文档标注
概述
wp_ajax_delete_post() 是一个 WordPress AJAX 处理函数,用于通过 AJAX 请求安全删除文章。它验证用户权限和请求,并调用 wp_delete_post() 执行删除操作。
关键要点
- 函数接受一个可选的 $action 参数,默认为 'delete-post',用于生成 AJAX 引用 nonce。
- 从 $_POST['id'] 获取文章 ID,并使用 check_ajax_referer() 验证 AJAX 请求的安全性。
- 通过 current_user_can('delete_post', $id) 检查当前用户是否有删除文章的权限。
- 使用 get_post() 确认文章存在,然后调用 wp_delete_post() 执行删除,根据结果返回不同的 wp_die() 状态码。
代码示例
function wp_ajax_delete_post( $action ) {
if ( empty( $action ) ) {
$action = 'delete-post';
}
$id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0;
check_ajax_referer( "{$action}_$id" );
if ( ! current_user_can( 'delete_post', $id ) ) {
wp_die( -1 );
}
if ( ! get_post( $id ) ) {
wp_die( 1 );
}
if ( wp_delete_post( $id ) ) {
wp_die( 1 );
} else {
wp_die( 0 );
}
}注意事项
- 此函数是 WordPress 核心 AJAX 处理的一部分,通常通过 admin-ajax.php 调用,开发者不应直接调用它。
- 返回的 wp_die() 状态码用于 AJAX 响应:-1 表示权限不足,1 表示文章不存在或删除成功,0 表示删除失败。
- 相关函数包括 wp_delete_post()、current_user_can()、check_ajax_referer()、wp_die() 和 get_post(),用于实现完整的删除流程。
原文内容
Handles deleting a post via AJAX.
Parameters
$actionstringrequired-
Action to perform.
Source
function wp_ajax_delete_post( $action ) {
if ( empty( $action ) ) {
$action = 'delete-post';
}
$id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0;
check_ajax_referer( "{$action}_$id" );
if ( ! current_user_can( 'delete_post', $id ) ) {
wp_die( -1 );
}
if ( ! get_post( $id ) ) {
wp_die( 1 );
}
if ( wp_delete_post( $id ) ) {
wp_die( 1 );
} else {
wp_die( 0 );
}
}
Changelog
| Version | Description |
|---|---|
| 3.1.0 | Introduced. |