how to run some code as soon as new image gets uploaded in wordpress 3 5 uploade

how to run some code as soon as new image gets uploaded in wordpress 3 5 uploade  using -'javascript,wordpress,file-upload,backbone.js,wordpress-3.5'

I need to run some code as soon as new images get uploaded in WordPress 3.5 uploader. Here is the code of wp-includes/js/media-views.js (line 529-540)

    uploading: function( attachment ) {
        var content = this.frame.content;

        // If the uploader was selected, navigate to the browser.
        if ( 'upload' === content.mode() )

        // If we're in a workflow that supports multiple attachments,
        // automatically select any uploading attachments.
        if ( this.get('multiple') )
            this.get('selection').add( attachment );

I added alert('New image uploaded!') at the bottom of this uploading function, and the browser alert 'New image uploaded!' when new image was uploaded. However I don't want to hack the core of WordPress, so I'm wondering if there is a way that I can write some code in my theme that can do the same thing? Sorry for my English. Thank you for you attention guys!

asked Oct 23, 2015 by vickeykumar66
0 votes

3 Answers

0 votes

This line of wp-plupload.js shows that the uploader queue will reset on complete. So you can do this:

wp.Uploader.queue.on('reset', function() { 
    alert('Upload Complete!');

I've tested it and it works on WP 3.5 sites.

So, here is the full version including support for both the regular uploader on "Upload New Media" Page and the new plupload uploader on "Insert Media" Dialog.

Create a javascript file named: wp-admin-extender.js and save it under your /custom/js/ folder or whatever within your template directory.

// Hack for "Upload New Media" Page (old uploader)

// Overriding the uploadSuccess function:
if (typeof uploadSuccess !== 'undefined') {
    // First backup the function into a new variable.
    var uploadSuccess_original = uploadSuccess;
    // The original uploadSuccess function with has two arguments: fileObj, serverData
    // So we globally declare and override the function with two arguments (argument names shouldn't matter)
    uploadSuccess = function(fileObj, serverData) 
        // Fire the original procedure with the same arguments
        uploadSuccess_original(fileObj, serverData);
        // Execute whatever you want here:
        alert('Upload Complete!');

// Hack for "Insert Media" Dialog (new plupload uploader)

// Hooking on the uploader queue (on reset):
if (typeof wp.Uploader !== 'undefined' && typeof wp.Uploader.queue !== 'undefined') {
    wp.Uploader.queue.on('reset', function() { 
        alert('Upload Complete!');

And finally; add this into your theme's functions.php to get this functionality in WP Admin:

//You can also use other techniques to add/register the script for WP Admin.
function extend_admin_js() {
    wp_enqueue_script('wp-admin-extender.js', get_template_directory_uri().'/custom/js/wp-admin-extender.js', array('media-upload', 'swfupload', 'plupload'), false, true);
add_action('admin_enqueue_scripts', 'extend_admin_js');

This might not be the legitimate solution but it's a workaround at least.

answered Oct 23, 2015 by tejas lakhani
0 votes

In Javascript, this may help:'ready',function(){console.log('your code here');});

There may also be an action in the php code that could work, I noticed there's echo apply_filters("async_upload_{$type}", $id); at the end of async-upload.php.

answered Oct 23, 2015 by suyesh.lokhande
0 votes

Maybe you could hook in to the add_attachement action?

function do_my_attachment_manipulation($attachment_ID)
    $attachment = get_attached_file($attachment_ID); // Gets path to attachment
    // Javascript alert:
answered Oct 23, 2015 by param.oncemore