Прикрепление медиа к типу записи без поддержки редактора

Я пытаюсь добавить вложения в пользовательский тип сообщения, который не поддерживает редактор (только отрывок).

Мне удалось отобразить диалоговое окно «Медиа-менеджер», но я вижу только кнопку «Вставить в сообщение» (которая в любом случае ничего не делает), и при загрузке изображений они не прикрепляются к сообщению.

Чтобы реализовать то, что я сделал до сих пор, я добавил очень простое мета-поле к типу сообщения:

function add_gallery_post_media_meta_box()
{

    add_meta_box(
        'gallery_post_media',
        'Gallery Media',
        'gallery_post_media',
        'gallery',
        'side',
        'high'
    );

} // add_file_meta_box
add_action('add_meta_boxes', 'add_gallery_post_media_meta_box');

function gallery_post_media()
{

    echo '<a href="#" id="gallery-add-media" title="' . __('Add media') .'">' . __('Add media') .'</a>';

} // end post_media

function register_admin_scripts() {
    wp_enqueue_media();
    wp_register_script( 'gallery_post_media_admin_script', get_template_directory_uri() . '/library/cpt/gallery.js' );
    wp_enqueue_script( 'gallery_post_media_admin_script' );

} // end register_scripts
add_action( 'admin_enqueue_scripts', 'register_admin_scripts' );

И сценарий:

jQuery(document).ready(function ($) {
    $('#gallery-add-media').click(function (e) {
        var send_attachment_bkp = wp.media.editor.send.attachment;
        var button = $(this);
        var id = button.attr('id').replace('_button', '');
        wp.media.editor.send.attachment = function (props, attachment) {
            $("#" + id).val(attachment.url);
            wp.media.editor.send.attachment = send_attachment_bkp;
        }

        wp.media.editor.open(button);
        event.preventDefault();
        return false;
    });
});

Если бы я смог найти какую-нибудь документацию о wp.media.editor.send.attachment, я бы, наверное, получил то, что хочу, но я не могу найти ничего полезного. Единственные решения, которые я нашел, основаны на настраиваемых полях, вместо этого я хочу просто прикрепить эти изображения к сообщению, не вставляя их в содержимое сообщения, как я делал бы с обычными сообщениями.

В качестве дополнительного вопроса: можно ли указать Media Manager принимать только изображения?


person Andrea Sciamanna    schedule 07.03.2013    source источник


Ответы (1)


Это JavaScript, который я использую для полей мультимедиа. Как только вы нажмете «Вставить», вы можете делать все, что хотите, с данными из выбранного изображения.

jQuery(document).ready(function() {
   //uploading files variable
   var custom_file_frame;
   jQuery(document).on('click', '.meida-manager', function(event) {
      event.preventDefault();
      $this = jQuery(this);
      //If the frame already exists, reopen it
      if (typeof(custom_file_frame)!=="undefined") {
         custom_file_frame.close();
      }

      //Create WP media frame.
      custom_file_frame = wp.media.frames.customHeader = wp.media({
         //Title of media manager frame
         title: "Sample title of WP Media Uploader Frame",
         library: {
            type: 'image'
         },
         button: {
            //Button text
            text: "insert text"
         },
         //Do not allow multiple files, if you want multiple, set true
         multiple: false
      });

      //callback for selected image
      custom_file_frame.on('select', function() {
         var attachment = custom_file_frame.state().get('selection').first().toJSON();
         //do something with attachment variable, for example attachment.filename
         //Object:
         //attachment.alt - image alt
         //attachment.author - author id
         //attachment.caption
         //attachment.dateFormatted - date of image uploaded
         //attachment.description
         //attachment.editLink - edit link of media
         //attachment.filename
         //attachment.height
         //attachment.icon - don't know WTF?))
         //attachment.id - id of attachment
         //attachment.link - public link of attachment, for example ""http://site.com/?attachment_id=115""
         //attachment.menuOrder
         //attachment.mime - mime type, for example image/jpeg"
         //attachment.name - name of attachment file, for example "my-image"
         //attachment.status - usual is "inherit"
         //attachment.subtype - "jpeg" if is "jpg"
         //attachment.title
         //attachment.type - "image"
         //attachment.uploadedTo
         //attachment.url - http url of image, for example "http://site.com/wp-content/uploads/2012/12/my-image.jpg"
         //attachment.width
         $this.val(attachment.url);
         $this.siblings('img').attr('src',attachment.url);
      });

      //Open modal
      custom_file_frame.open();
   });
});
person Daniel Iser    schedule 03.09.2013