函数文档

wp_ajax_get_attachment()

💡 云策文档标注

概述

wp_ajax_get_attachment() 是一个 WordPress AJAX 处理函数,用于通过 AJAX 请求获取附件数据。它验证请求参数、用户权限,并返回 JSON 格式的附件信息。

关键要点

  • 函数通过 AJAX 处理附件获取请求,要求提供有效的附件 ID。
  • 验证步骤包括:检查 ID 参数是否存在、转换为非负整数、确认附件存在、验证 post_type 为 'attachment'、检查用户具有 'upload_files' 权限。
  • 使用 wp_prepare_attachment_for_js() 准备附件数据,并通过 wp_send_json_success() 或 wp_send_json_error() 返回 JSON 响应。
  • 函数在 WordPress 3.5.0 版本中引入。

代码示例

function wp_ajax_get_attachment() {
    if ( ! isset( $_REQUEST['id'] ) ) {
        wp_send_json_error();
    }

    $id = absint( $_REQUEST['id'] );
    if ( ! $id ) {
        wp_send_json_error();
    }

    $post = get_post( $id );
    if ( ! $post ) {
        wp_send_json_error();
    }

    if ( 'attachment' !== $post->post_type ) {
        wp_send_json_error();
    }

    if ( ! current_user_can( 'upload_files' ) ) {
        wp_send_json_error();
    }

    $attachment = wp_prepare_attachment_for_js( $id );
    if ( ! $attachment ) {
        wp_send_json_error();
    }

    wp_send_json_success( $attachment );
}

注意事项

  • 函数依赖于 $_REQUEST['id'] 参数,必须通过 AJAX 请求传递有效的附件 ID。
  • 用户权限检查确保只有具有 'upload_files' 能力的用户才能访问附件数据。
  • 错误处理使用 wp_send_json_error(),成功时返回 wp_prepare_attachment_for_js() 处理的数据。

📄 原文内容

Handles getting an attachment via AJAX.

Source

function wp_ajax_get_attachment() {
	if ( ! isset( $_REQUEST['id'] ) ) {
		wp_send_json_error();
	}

	$id = absint( $_REQUEST['id'] );
	if ( ! $id ) {
		wp_send_json_error();
	}

	$post = get_post( $id );
	if ( ! $post ) {
		wp_send_json_error();
	}

	if ( 'attachment' !== $post->post_type ) {
		wp_send_json_error();
	}

	if ( ! current_user_can( 'upload_files' ) ) {
		wp_send_json_error();
	}

	$attachment = wp_prepare_attachment_for_js( $id );
	if ( ! $attachment ) {
		wp_send_json_error();
	}

	wp_send_json_success( $attachment );
}

Changelog

Version Description
3.5.0 Introduced.