Question

I would like to remove some items from the quick edit screen on a custom post type.

I would like to remove "slug", "date" and "password", as they will never not be used by end users.

quick edit cpt

I'm open to any suggestions!

Was it helpful?

Solution

There's no hooks to modify the Quick Edit, it has to be done with CSS and/or jQuery.

The plugin Adminimize is very good to hide administrative elements, CPTs included.

But in the Quick Edit box, for lack of CSS classes or ID's to target, it is not possible to hide the slug field, and only possible to partially hide the date adding a custom option as in the following snapshot.

adminimize cpt
click to enlarge


So, a pure jQuery solution is necessary:

add_action( 'admin_head-edit.php', 'wpse_59871_script_enqueuer' );

function wpse_59871_script_enqueuer() 
{    
    /**
       /wp-admin/edit.php?post_type=post
       /wp-admin/edit.php?post_type=page
       /wp-admin/edit.php?post_type=cpt  == gallery in this example
     */

    global $current_screen;
    if( 'edit-gallery' != $current_screen->id )
        return;
    ?>
    <script type="text/javascript">         
        jQuery(document).ready( function($) {
            $('span:contains("Slug")').each(function (i) {
                $(this).parent().remove();
            });
            $('span:contains("Password")').each(function (i) {
                $(this).parent().parent().remove();
            });
            $('span:contains("Date")').each(function (i) {
                $(this).parent().remove();
            });
            $('.inline-edit-date').each(function (i) {
                $(this).remove();
            });
        });    
    </script>
    <?php
}

Related quick-edit Q&A's that I've worked

OTHER TIPS

Remove category select with filter:

add_filter( 'quick_edit_show_taxonomy', function( $show, $taxonomy_name, $view ) {

    if ( 'category' == $taxonomy_name )
        return false;

    return $show;
}, 10, 3 );

This solution doesn't work if you use Wordpress in another language than English:

$('span:contains("Password")').each(function (i) {
    $(this).parent().parent().remove();
});

If you want to use it independently of language you should use something like this:

$( "input[class*='password']" ).each(function (i) {
    $(this).closest('div').remove();
})

It removes the parent DIV of INPUT with class that contains word "password".

Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange
scroll top