web-dev-qa-db-fra.com

Comment puis-je limiter les options de statut pour l'édition en bloc/rapide à Publication et Brouillon?

Pour mon type de publication personnalisé, je souhaite uniquement disposer des options "Publié" et "Brouillon" dans les écrans d'édition en bloc et d'édition rapide, c'est-à-dire.

screenshot

J'ai essayé de m'accrocher au filtre quick_edit_dropdown_pages_args mais il ne semble pas se faire virer. J'ai inséré une wp_die() dans mon rappel, mais l'écran d'administration répertorie tous les messages comme si rien n'avait changé. Une idée?

Merci d'avance.

2
Ana Ban

En répondant à cette question , nous avons trouvé une solution jQuery à celle d'Ana Ban.

add_action( 'admin_head', 'wpse_56551_script_enqueuer' );

function wpse_56551_script_enqueuer() 
{
    global $current_screen;

    /**
       /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
     */
    if( 'edit-gallery' == $current_screen->id ) 
    {
        ?>
        <script type="text/javascript">         
        jQuery(document).ready( function($) {
            $("a.editinline").live("click", function () {
                var ilc_qe_id = inlineEditPost.getId(this);
                setTimeout(function() {
                        $('#edit-'+ilc_qe_id+' select[name="_status"] option[value="pending"]').remove();  
                        $('#edit-'+ilc_qe_id+' select[name="_status"] option[value="private"]').remove();  
                    }, 100);
            });

            $('#doaction, #doaction2').live("click", function () {
                setTimeout(function() {
                        $('#bulk-edit select[name="_status"] option[value="pending"]').remove();  
                        $('#bulk-edit select[name="_status"] option[value="private"]').remove();  
                    }, 100);
            });       
        });    
        </script>
    <?php
    }

    /**
       /wp-admin/post.php?post=21&action=edit
     */
    if( 'gallery' == $current_screen->id ) 
    {
        ?>
        <script type="text/javascript">
        jQuery(document).ready( function($) {
            $('#post_status option[value="pending"]').remove();
            $('#post_status option[value="private"]').remove();
        });
        </script>
    <?php
    }
}

[réponse originale]

En recherchant ce filtre dans /wp-admin/, nous le trouvons situé à /wp-admin/includes/class-wp-posts-list-table.php. Et on voit qu’il s’agit de la hiérarchie des publications, pas du statut ...

Plus bas dans ce fichier, nous trouvons le groupe d'état, mais il n'a pas de filtre , donc je suppose qu'il n'y aura pas de solution accrochée ...

// starting at line 950
<div class="inline-edit-group">
<label class="inline-edit-status alignleft">
  <span class="title"><?php _e( 'Status' ); ?></span>
  <select name="_status">
<?php if ( $bulk ) : ?>
      <option value="-1"><?php _e( '&mdash; No Change &mdash;' ); ?></option>
<?php endif; // $bulk ?>
  <?php if ( $can_publish ) : // Contributors only get "Unpublished" and "Pending Review" ?>
      <option value="publish"><?php _e( 'Published' ); ?></option>
      <option value="future"><?php _e( 'Scheduled' ); ?></option>
<?php if ( $bulk ) : ?>
      <option value="private"><?php _e( 'Private' ) ?></option>
<?php endif; // $bulk ?>
  <?php endif; ?>
      <option value="pending"><?php _e( 'Pending Review' ); ?></option>
      <option value="draft"><?php _e( 'Draft' ); ?></option>
  </select>
</label>
1
brasofilo