wp_ajax_trash_post()
云策文档标注
概述
wp_ajax_trash_post() 是一个 WordPress AJAX 处理函数,用于通过 AJAX 请求将文章移至回收站或从回收站恢复。它验证用户权限和请求安全性,并调用相应的核心函数执行操作。
关键要点
- 函数处理 AJAX 请求,参数 $action 指定操作类型(如 'trash-post' 或 'untrash-post')。
- 通过 check_ajax_referer() 验证 AJAX 请求的 nonce,防止外部攻击。
- 使用 current_user_can() 检查当前用户是否有删除文章的权限。
- 根据 $action 值调用 wp_trash_post() 或 wp_untrash_post() 执行具体操作。
- 函数返回状态码(通过 wp_die()),成功时返回 1,失败时返回 0 或 -1。
代码示例
function wp_ajax_trash_post( $action ) {
if ( empty( $action ) ) {
$action = 'trash-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 ( 'trash-post' === $action ) {
$done = wp_trash_post( $id );
} else {
$done = wp_untrash_post( $id );
}
if ( $done ) {
wp_die( 1 );
}
wp_die( 0 );
}注意事项
- 确保 AJAX 请求中包含正确的 nonce 和文章 ID,否则可能导致验证失败。
- 用户权限检查基于 'delete_post' 能力,需确保用户角色具有相应权限。
- 函数返回状态码用于前端处理,开发者应据此设计响应逻辑。
原文内容
Handles sending a post to the Trash via AJAX.
Parameters
$actionstringrequired-
Action to perform.
Source
function wp_ajax_trash_post( $action ) {
if ( empty( $action ) ) {
$action = 'trash-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 ( 'trash-post' === $action ) {
$done = wp_trash_post( $id );
} else {
$done = wp_untrash_post( $id );
}
if ( $done ) {
wp_die( 1 );
}
wp_die( 0 );
}
Changelog
| Version | Description |
|---|---|
| 3.1.0 | Introduced. |