Get the selected posts IDs to use in bulk edit AJAX call


The WordPress codex for bulk_edit_custom_box, along with this bulk edit example use the following piece of JavaScript to create an array of selected post IDs to send with the AJAX call that updates the posts.

$bulk_row.find( '#bulk-titles' ).children().each( function() {
    $post_ids.push( $( this ).attr( 'id' ).replace( /^(ttle)/i, '' ) );

The full code surrounding this snippet is below.

My list tables have input fields for meta values, and the inline quick edit works successfully, but bulk edit fails. When debugging I found the $post_ids array is empty because there are no elements on my page with the ID #bulk-titles.

So my question, where do the #bulk-titles elements come from and why would my page not have them?

$( '#bulk_edit' ).live( 'click', 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 custom fields
    var $item_thickness = $bulk_row.find( 'input[name="item_thickness"]' ).val();
    var $item_width = $bulk_row.find( 'input[name="item_width"]' ).val();
    var $item_length = $bulk_row.find( 'input[name="item_length"]' ).val();

    // save the data
        url: ajaxurl, // this is a variable that WordPress has already defined for us
        type: 'POST',
        async: false,
        cache: false,
        data: {
            action: 'manage_wp_posts_using_bulk_quick_save_bulk_edit', // 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
            item_thickness: $item_thickness,
            item_width: $item_width,
            item_length: $item_length

, , , Andrew 6 years 2015-08-03T02:55:49-05:00 0 Answers 96 views 0

Leave an answer