函数文档

wp_ajax_delete_page()

💡 云策文档标注

概述

wp_ajax_delete_page() 是一个 WordPress AJAX 处理函数,用于通过 AJAX 请求删除页面。它验证用户权限和请求安全性,并调用 wp_delete_post() 执行删除操作。

关键要点

  • 函数接收一个 $action 参数,默认为 'delete-page',用于 AJAX 操作标识。
  • 通过 $_POST['id'] 获取页面 ID,并使用 check_ajax_referer() 验证 AJAX 请求的 nonce 以防止 CSRF 攻击。
  • 使用 current_user_can('delete_page', $id) 检查当前用户是否有删除页面的权限,无权限时调用 wp_die(-1) 终止执行。
  • 通过 get_post($id) 验证页面是否存在,不存在时调用 wp_die(1) 返回错误。
  • 调用 wp_delete_post($id) 执行删除,成功时返回 wp_die(1),失败时返回 wp_die(0)。

代码示例

function wp_ajax_delete_page( $action ) {
	if ( empty( $action ) ) {
		$action = 'delete-page';
	}

	$id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0;
	check_ajax_referer( "{$action}_$id" );

	if ( ! current_user_can( 'delete_page', $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 调用,开发者应确保前端发送正确的 POST 数据和 nonce。
  • wp_die() 用于返回 AJAX 响应,返回值 -1、0、1 表示不同状态,开发者需在前端处理这些响应。
  • 相关函数包括 wp_delete_post()、current_user_can()、check_ajax_referer()、get_post() 和 wp_die(),用于实现删除、权限检查、安全验证和数据获取。

📄 原文内容

Handles deleting a page via AJAX.

Parameters

$actionstringrequired
Action to perform.

Source

function wp_ajax_delete_page( $action ) {
	if ( empty( $action ) ) {
		$action = 'delete-page';
	}

	$id = isset( $_POST['id'] ) ? (int) $_POST['id'] : 0;
	check_ajax_referer( "{$action}_$id" );

	if ( ! current_user_can( 'delete_page', $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.