bulk_edit_custom_box is an action that lets plugin print inputs for custom columns when bulk editing. This action is called one time for each custom column. Custom columns are added with the manage_edit-${post_type}_columns filter. To save the data from the custom inputs, hook the save_post action.
Note that the action function is passed neither the post ID nor any existing value for the column.
(function($) {
// we create a copy of the WP inline edit post function
var $wp_inline_edit = inlineEditPost.edit;
// and then we overwrite the function with our own code
inlineEditPost.edit = function( id ) {
// "call" the original WP edit function
// we don't want to leave WordPress hanging
$wp_inline_edit.apply( this, arguments );
// now we take care of our business
// get the post ID
var $post_id = 0;
if ( typeof( id ) == 'object' )
$post_id = parseInt( this.getId( id ) );
if ( $post_id > 0 ) {
// define the edit row
var $edit_row = $( '#edit-' + $post_id );
var $post_row = $( '#post-' + $post_id );
// get the data
var $book_author = $( '.column-book_author', $post_row ).html();
var $inprint = $( '.column-inprint', $post_row ).attr('checked');
// populate the data
$( ':input[name="book_author"]', $edit_row ).val( $book_author );
$( ':input[name="inprint"]', $edit_row ).attr('checked', $inprint );
}
};
$( document ).on( 'click', '#bulk_edit', function() {
// define the bulk edit row
var $bulk_row = $( '#bulk-edit' );
// get the selected post ids that are being edited
var $post_ids = new Array();
$bulk_row.find( '#bulk-titles' ).children().each( function() {
$post_ids.push( $( this ).attr( 'id' ).replace( /^(ttle)/i, '' ) );
});
// get the data
var $book_author = $bulk_row.find( 'textarea[name="book_author"]' ).val();
var $inprint = $bulk_row.find( 'input[name="inprint"]' ).attr('checked') ? 1 : 0;
// save the data
$.ajax({
url: ajaxurl, // this is a variable that WordPress has already defined for us
type: 'POST',
async: false,
cache: false,
data: {
action: 'save_bulk_edit_book', // this is the name of our WP AJAX function that we'll set up next
post_ids: $post_ids, // and these are the 2 parameters we're passing to our function
book_author: $book_author,
inprint: $inprint
}
});
});
})(jQuery);
You must log in before being able to contribute a note or feedback.
(From Codex)
Creating Inputs
Reuse function display_custom_quickedit_book from quick_edit_custom_box
(From Codex)
Saving Data
Unlike quick edit’s data saving process, we’ll save via Ajax calls.
(From Codex)
Calling Ajax
Our updated scripts/admin_edit.js from quick_edit_custom_box.