post_type ) { wp_die( __( 'Invalid post type.' ) ); } switch ( $_REQUEST['fetch'] ) { case 3: ?>
'; } // Title shouldn't ever be empty, but use filename just in case. $file = get_attached_file( $post->ID ); $file_url = wp_get_attachment_url( $post->ID ); $title = $post->post_title ? $post->post_title : wp_basename( $file ); ?>
' . _x( 'Edit', 'media item' ) . ''; } else { echo '' . _x( 'Success', 'media item' ) . ''; } ?>
false, 'delete' => true, ) ); break; default: add_filter( 'attachment_fields_to_edit', 'media_post_single_attachment_fields_to_edit', 10, 2 ); echo get_media_item( $id ); break; } exit; } check_admin_referer( 'media-form' ); $post_id = 0; if ( isset( $_REQUEST['post_id'] ) ) { $post_id = absint( $_REQUEST['post_id'] ); if ( ! get_post( $post_id ) || ! current_user_can( 'edit_post', $post_id ) ) { $post_id = 0; } } $id = media_handle_upload( 'async-upload', $post_id ); if ( is_wp_error( $id ) ) { $button_unique_id = uniqid( 'dismiss-' ); $error_description_id = uniqid( 'error-description-' ); $message = sprintf( '%s %s
%s', sprintf( '', esc_attr( $button_unique_id ), esc_attr( $error_description_id ), __( 'Dismiss' ) ), sprintf( /* translators: %s: Name of the file that failed to upload. */ __( '“%s” has failed to upload.' ), esc_html( $_FILES['async-upload']['name'] ) ), esc_html( $id->get_error_message() ) ); wp_admin_notice( $message, array( 'id' => $error_description_id, 'additional_classes' => array( 'error-div', 'error' ), 'paragraph_wrap' => false, ) ); $speak_message = sprintf( /* translators: %s: Name of the file that failed to upload. */ __( '%s has failed to upload.' ), $_FILES['async-upload']['name'] ); $js_function = <<<'JS' /** * Announces the upload failure and wires up its dismiss button. * * @param {JQueryStatic} $ The jQuery object. * @param {Object} args PHP exports. * @param {string} args.speakMessage Message announced to assistive technology. * @param {string} args.buttonSelector Selector for the notice's dismiss button. * @return {void} */ ( $, { speakMessage, buttonSelector } ) => { setTimeout( () => wp.a11y.speak( speakMessage ), 1500 ); $( buttonSelector ).on( 'click', function () { $( this ) .parents( 'div.media-item' ) .slideUp( 200, function () { $( this ).remove(); wp.a11y.speak( wp.i18n.__( 'Error dismissed.' ) ); $( '#plupload-browse-button' ).trigger( 'focus' ); } ); } ); } JS; wp_print_inline_script_tag( sprintf( '( %s )( jQuery, %s )', $js_function, wp_json_encode( array( 'speakMessage' => $speak_message, 'buttonSelector' => 'button#' . $button_unique_id, ), JSON_HEX_TAG | JSON_UNESCAPED_SLASHES ) ) ); exit; } if ( $_REQUEST['short'] ) { // Short form response - attachment ID only. echo $id; } else { // Long form response - big chunk of HTML. $type = $_REQUEST['type']; /** * Filters the returned ID of an uploaded attachment. * * The dynamic portion of the hook name, `$type`, refers to the attachment type. * * Possible hook names include: * * - `async_upload_audio` * - `async_upload_file` * - `async_upload_image` * - `async_upload_video` * * @since 2.5.0 * * @param int $id Uploaded attachment ID. */ echo apply_filters( "async_upload_{$type}", $id ); }