函数文档

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.