7

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!

3 Answers 3

8

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

3

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 );
1
0

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".

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.