Abrufen benutzerdefinierter Bildgrößen von Medien-Uploader-JavaScript-Objekt

Ich versuche, die benutzerdefinierten Bildgrößen, die ich mit add_image_size erstellt add_image_size , im JavaScript-Objekt zurückzugeben. Ich weiß, wie ich sie in das Drop-Down-Menü aufnehmen kann, aber das will / brauche ich nicht.

Das aktuelle Objekt gibt die Standardwerte (voll, groß, mittel und Miniaturansicht) in einem Array zurück, aber keine der benutzerdefinierten Größen.

Hier ist der Code, den ich verwende, um die Uploader-Instanz zu setzen

 jQuery('input.guide-logo-upload').on('click', function( event ){ event.preventDefault(); // If the media frame already exists, reopen it. if ( file_frame ) { file_frame.open(); return; } // Create the media frame. file_frame = wp.media.frames.file_frame = wp.media({ title: jQuery( this ).data( 'uploader_title' ), button: { text: jQuery( this ).data( 'uploader_button_text' ) }, multiple: false // force single file }); // run the callback when selected file_frame.on( 'select', function() { // make sure to only deal with the first item attachment = file_frame.state().get('selection').first().toJSON(); // WHERE ARE MY CUSTOM SIZES console.log(attachment); // Populate the field with the URL and show a preview below it jQuery('input#g-logo').val( attachment.url ); jQuery('input#g-logo-id').val( attachment.id ); jQuery('p.logo-description').after( '' ); jQuery('p.logo-description').after( '' ); }); // Finally, open the modal file_frame.open(); }); 

Solutions Collecting From Web of "Abrufen benutzerdefinierter Bildgrößen von Medien-Uploader-JavaScript-Objekt"

Dank eines Freundes auf Twitter konnte ich das funktionieren lassen. Unten ist der Code.

 function wpse_110060_image_sizes_js( $response, $attachment, $meta ){ $size_array = array( 'custom_size_one', 'custom_size_two') ; foreach ( $size_array as $size ): if ( isset( $meta['sizes'][ $size ] ) ) { $attachment_url = wp_get_attachment_url( $attachment->ID ); $base_url = str_replace( wp_basename( $attachment_url ), '', $attachment_url ); $size_meta = $meta['sizes'][ $size ]; $response['sizes'][ $size ] = array( 'height' => $size_meta['height'], 'width' => $size_meta['width'], 'url' => $base_url . $size_meta['file'], 'orientation' => $size_meta['height'] > $size_meta['width'] ? 'portrait' : 'landscape', ); } endforeach; return $response; } add_filter ( 'wp_prepare_attachment_for_js', 'wpse_110060_image_sizes_js' , 10, 3 ); 

hinweis: das array und foreach sind nur notwendig, weil ich zwei separate habe, die ich einbeziehen musste. Wenn nur 1 enthalten ist, kann das entfernt werden.