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. |