Tampilkan Pengunggah Media di Plugin Sendiri di Wordpress 3.5


10

Saya memiliki sedikit masalah dengan Pengunggah Media di WordPress 3.5 baru. Saya membuat plugin sendiri yang mengunggah gambar. Saya menggunakan kode JS ini:

<script type="text/javascript">
    var file_frame;

    jQuery('.button-secondary').live('click', function( event ){

        event.preventDefault();

        if ( file_frame ) {
            file_frame.open();
            return;
        }

        file_frame = wp.media.frames.file_frame = wp.media(
            {
                title: 'Select File',
                button: {
                    text: jQuery( this ).data( 'uploader_button_text' )
                },
                multiple: false
            }
        );

        file_frame.on('select', function() {
            attachment = file_frame.state().get('selection').first().toJSON();
            jQuery('#IMGsrc').val(attachment.url);
        });

        file_frame.open();
    });
</script>

Kode berfungsi dengan baik, tetapi sayangnya formulir tampak tidak lengkap. Ketika saya memilih gambar apa pun tidak menunjukkan 'Pengaturan Tampilan Lampiran' di sisi kanan. Saya tidak tahu kenapa. Saya mencoba menambahkan opsi ke media:

displaySettings: true,
displayUserSettings: true

Tetapi itu juga tidak berhasil.


Anda menelepon wp_enqueue_media();?
Bainternet

Jawaban:


7

Hanya Pengunggah

di bawah kode contoh, hanya berfungsi pada halaman edit posting. Jika Anda akan menggunakan juga di halaman lain, lalu sertakan fungsi wp_enqueue_media(), lihat judul berikutnya.

jQuery(document).ready(function($) {

  var _custom_media = true,
      _orig_send_attachment = wp.media.editor.send.attachment;

  $('.stag-metabox-table .button').click(function(e) {

    var send_attachment_bkp = wp.media.editor.send.attachment;
    var button = $(this);
    var id = button.attr('id').replace('_button', '');

    _custom_media = true;
    wp.media.editor.send.attachment = function(props, attachment) {

      if ( _custom_media ) {
        $("#"+id).val(attachment.url);
      } else {
        return _orig_send_attachment.apply( this, [props, attachment] );
      };

    }

    wp.media.editor.open(button);

    return false;
  });

  $('.add_media').on('click', function() {
    _custom_media = false;
  });

});

Penjelasan singkat tentang Manajer Media

  1. Pada awalnya termasuk skrip yang relevan, gunakan fungsi inti: wp_enqueue_media(); Fungsi mengatur semua pengaturan yang relevan, melokalisasi teks menu, dan memuat semua file javascript yang sesuai.

    Anda dapat menambahkan skrip khusus melalui wp_enqueue_script().

    // Also adds a check to make sure `wp_enqueue_media` has only been called once.
    // @see: http://core.trac.wordpress.org/ticket/22843
    if ( ! did_action( 'wp_enqueue_media' ) )
        wp_enqueue_media();

    Tambahkan juga skrip default untuk tajuk khusus: wp_enqueue_script( 'custom-header' ); Ini membuat bingkai pemilihan gambar, dan mengikatnya ke elemen antarmuka, misalnya tombol atau tautan. Kemudian memanggil url atau pilihan kami dengan id gambar yang dipilih. Ini adalah skrip yang sama yang digunakan saat memilih gambar header khusus tema.

  2. Tambahkan tombol ke manajer media:

    <?php
    $modal_update_href = esc_url( add_query_arg( array(
        'page'     => 'my_media_manager',
        '_wpnonce' => wp_create_nonce( 'my_media_manager_options' ),
    ), admin_url( 'upload.php' ) ) );
    ?>
    
    <p>
    <a id="choose-from-library-link" href="#"
        data-update-link="<?php echo esc_attr( $modal_update_href ); ?>"
        data-choose="<?php esc_attr_e( 'Choose a Default Image' ); ?>"
        data-update="<?php esc_attr_e( 'Set as default image' ); ?>"><?php _e( 'Set default image' ); ?>
    </a> |
    </p>
  3. Tentukan Fungsi Aksi terakhir, Anda perlu menambahkan beberapa kode untuk memproses id gambar yang akan kami sampaikan ke url data-pembaruan-tautan.

    // Add to the top of our data-update-link page
    if ( isset($_REQUEST['file']) ) { 
        check_admin_referer( 'my_media_manager_options' );
    
            // Process and save the image id
        $options = get_option( 'my_media_manager_options', TRUE );
        $options['default_image'] = absint( $_REQUEST['file'] );
        update_option( 'my_media_manager_options', $options );
    }

Sumber dan petunjuk:


Apa yang menjadi atribut 'halaman' untuk halaman admin, katakan Widgets.php?
AlxVallejo

Gunakan plugin Info Admin Saat Ini dan Anda melihat string ini, juga semua kait, Anda dapat menggunakan tentang halaman ini. Dalam contoh Anda itu widgets.php.
bueltge

0

Saya telah memberikan jawaban di situs stackoverflow.com juga dan itu akan membantu.

Saya menggunakan metode ini untuk menggunakan pengunggah media ke plugin kustom saya. Mungkin ini akan membantu.

di file tema utama (index.php) tambahkan ini.

wp_enqueue_style('thickbox'); // call to media files in wp
wp_enqueue_script('thickbox');
wp_enqueue_script( 'media-upload'); 


// load script to admin
function wpss_admin_js() {
     $siteurl = get_option('siteurl');
     $url = $siteurl . '/wp-content/plugins/' . basename(dirname(__FILE__)) . '/js/admin_script.js';
     echo "<script type='text/javascript' src='$url'></script>"; 
}
 add_action('admin_head', 'wpss_admin_js');


Dalam file admin_script.js ,

jQuery('#wpss_upload_image_button').click(function() {
    formfield = jQuery('#wpss_upload_image').attr('name');
    tb_show('', 'media-upload.php?type=image&amp;TB_iframe=true');
    return false;
});

window.send_to_editor = function(html) {
 imgurl = jQuery('img',html).attr('src');
 jQuery('#wpss_upload_image').val(imgurl);
 tb_remove();

 jQuery('#wpss_upload_image_thumb').html("<img height='65' src='"+imgurl+"'/>");
}

file admin (admin_settings.php),

<div id="wpss_upload_image_thumb" class="wpss-file">
    <?php if(isset($record->security_image) && $record->security_image !='') { ?>
       <img src="<?php echo $record->security_image;?>"  width="65"/><?php } else {    echo $defaultImage; } ?>
</div>
<input id="wpss_upload_image" type="text" size="36" name="wpss_upload_image" value="" class="wpss_text wpss-file" />
<input id="wpss_upload_image_button" type="button" value="Upload Image" class="wpss-filebtn" />

Lebih detail di blog saya

Info lebih lanjut http://webexplorar.com/how-to-use-media-uploader-in-wordpress-custom-plugin/


Harap transfer jawaban itu ke jawaban Anda di sini. Jika tautan itu dihapus, jawaban Anda di sini tidak akan berguna.
Pieter Goosen

Saya pikir kotak tebal sekarang saat ini sudah sangat tua.
Musa Haidari

0

Cukup gunakan kode ini untuk pengunggah media. Anda mendapat tautan dalam respons jquery.

<label for="upload_image">
    <input id="upload_image" type="text" size="36" name="ad_image" value="http://" /> 
    <input id="upload_image_button" class="button" type="button" value="Upload Image" />
    <br />Enter a URL or upload an image
</label>

<?php
add_action('admin_enqueue_scripts', 'my_admin_scripts');

function my_admin_scripts() {
    if (isset($_GET['page']) && $_GET['page'] == 'my_plugin_page') {
        wp_enqueue_media();
        wp_register_script('my-admin-js', WP_PLUGIN_URL.'/my-plugin/my-admin.js', array('jquery'));
        wp_enqueue_script('my-admin-js');
    }
}

?>

<script>
    jQuery(document).ready(function($){


    var custom_uploader;


    $('#upload_image_button').click(function(e) {

        e.preventDefault();

        //If the uploader object has already been created, reopen the dialog
        if (custom_uploader) {
            custom_uploader.open();
            return;
        }

        //Extend the wp.media object
        custom_uploader = wp.media.frames.file_frame = wp.media({
            title: 'Choose Image',
            button: {
                text: 'Choose Image'
            },
            multiple: true
        });

        //When a file is selected, grab the URL and set it as the text field's value
        custom_uploader.on('select', function() {
            console.log(custom_uploader.state().get('selection').toJSON());
            attachment = custom_uploader.state().get('selection').first().toJSON();
            $('#upload_image').val(attachment.url);
        });

        //Open the uploader dialog
        custom_uploader.open();

    });


});
    </script>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.