How to add a custom field in a post table quick edit box in wordpress

Below is working code for add a custom field into quick edit box

// Below code will add a custom field.
add_action( 'quick_edit_custom_box', 'rj_display_display_order_box_in_quick_edit', 10, 2 );

function rj_display_display_order_box_in_quick_edit( $column_name, $post_type ) {
    if(!in_array( $post_type,array('people','watch-us') ))
    {
        return;
    }
    static $printNonce = TRUE;
    if ( $printNonce ) {
        $printNonce = FALSE;
        wp_nonce_field( 'display_order_edit_field', 'display_order_edit_nonce' );
    }

    ?>
    <fieldset class="inline-edit-col-right inline-edit-book">
      <div class="inline-edit-col column-<?php echo $column_name; ?>">
        <label class="inline-edit-group">
        <?php
         switch ( $column_name ) {
         case 'display_order':
             ?><span class="title">Display Order</span><span class="input-text-wrap"><input name="display_order" /></span><?php
             break;
         }
        ?>
        </label>
      </div>
    </fieldset>
    <?php
}

// below filter will add a custom field column in table
add_filter( 'manage_posts_columns', 'rj_manage_display_order_columns', 10, 2 );
function rj_manage_display_order_columns( $columns, $post_type ) {
   if ( !in_array( $post_type,array('people','watch-us') ) )
   {
    return $columns;
   }
   $new_columns = array();
         foreach( $columns as $key => $value ) {
            $new_columns[ $key ] = $value;
            if ( $key == 'author' )
               $new_columns[ 'display_order' ] = 'Display Order';
         }
         return $new_columns;
}
// below action will display value of custom field
add_action( 'manage_posts_custom_column', 'rj_display_order_column_value', 10, 2 );
function rj_display_order_column_value( $column_name, $post_id ) {
   switch( $column_name ) {
      case 'display_order':
         echo '<div id="display_order-' . $post_id . '">' . get_post_meta( $post_id, 'display_order', true ) . '</div>';
         break;
   }
}

// below action for add a custom js code file into admin sde
add_action( 'admin_print_scripts-edit.php', 'rj_enqueue_edit_display_order_script' );
function rj_enqueue_edit_display_order_script() {
   wp_enqueue_script( 'rj-admin-edit', get_template_directory_uri() . '/assets/js/quick_edit.js', array( 'jquery', 'inline-edit-post' ), '', true );
  
}

// my quick_edit.js file

(function($) {
    var $wp_inline_edit = inlineEditPost.edit;
   inlineEditPost.edit = function( id ) {
   $wp_inline_edit.apply( this, arguments );
      var $post_id = 0;
      if ( typeof( id ) == 'object' )
         $post_id = parseInt( this.getId( id ) );

      if ( $post_id > 0 ) {

         var $edit_row = $( '#edit-' + $post_id );
     var $display_order = $( '#display_order-' + $post_id ).text();
     $edit_row.find( 'input[name="display_order"]' ).val( $display_order );

      }

   };

})(jQuery);
// my quick_edit.js file end
// this will save custom field value in quick edit
add_action( 'save_post','rj_save_quick_edit_display_order' );
function rj_save_quick_edit_display_order( $post_id ) {

global $wpdb;

   if ( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE )
      return $post_id;
   if ( !in_array(  $_POST['post_type'],array('people','watch-us') ) ) {
        return;
    }
   if ( isset( $post->post_type ) && $post->post_type == 'revision' )
        return $post_id;
     if ( array_key_exists( 'display_order', $_POST ) )
        update_post_meta( $post_id, 'display_order', $_POST['display_order'] );
}
// below script for save quick_edit bulk action values
add_action( 'wp_ajax_manage_wp_posts_using_bulk_quick_save_bulk_edit', 'manage_wp_posts_using_bulk_quick_save_bulk_edit' );
function manage_wp_posts_using_bulk_quick_save_bulk_edit() {

    $post_ids = ( isset( $_POST[ 'post_ids' ] ) && !empty( $_POST[ 'post_ids' ] ) ) ? $_POST[ 'post_ids' ] : NULL;
        
    if ( ! empty( $post_ids ) && is_array( $post_ids ) ) {
    
        $custom_fields = array( 'display_order' );
        foreach( $custom_fields as $field ) {
            if ( isset( $_POST[ $field ] ) && !empty( $_POST[ $field ] ) ) {
                foreach( $post_ids as $post_id ) {
                    update_post_meta( $post_id, $field, $_POST[ $field ] );
                }
            }
        }
    }
}

Comments

Popular posts from this blog

How to create a custom wp_list_table and bulk action in wordpress

How to add a custom sorting or order by option on category archive or product archive page in woocommerce wordpress

How to add image option in nav menu in wordpress