web-dev-qa-db-fra.com

Comment faire pour supprimer ces éléments de l'écran de liste de types de messages personnalisés?

Je suis en train de modifier la liste des publications d'un type de publication personnalisé et je souhaite supprimer tous les éléments de la tête de tablenav, comme ce qui est indiqué dans l'image suivante.

 enter image description here 

Est-ce que wordpress a un crochet spécial pour ça, ou devrais-je utiliser le sale chemin?

5
KeepMove

Je ne sais pas ce que vous entendez par sale façon, espérons-le pas édition de base!

Vous pouvez le cacher avec CSS.

Ou vous pouvez le faire avec PHP - voir ci-dessous:

Masquer la partie vues

Vous pouvez supprimer la partie vues avec

add_filter( 'views_edit-post', '__return_null' );

pour le type de poste post sur l'écran edit.php.

L'objet post table est créé à partir de:

$wp_list_table = _get_list_table('WP_Posts_List_Table');

mais il n'y a pas de filtre disponible dans la fonction _get_list_table().

Solution de contournement: extension de la classe WP_Posts_List_Table

Voici donc une solution de contournement en étendant la classe WP_Posts_List_Table et en remplaçant ses méthodes dans le filtre views_edit-post - n'essayez pas cela à la maison! ;-)

/**
 * Headless post table
 * 
 * @link http://wordpress.stackexchange.com/a/205281/26350
 */
add_action( 'load-edit.php', function()
{
    // Target the post edit screen
    if( 'edit-post' !== get_current_screen()->id )
        return;

    // Include the WP_Posts_List_Table class
    require_once ( ABSPATH . 'wp-admin/includes/class-wp-posts-list-table.php' );

    // Extend the WP_Posts_List_Table class and remove stuff
    class WPSE_Headless_Table extends WP_Posts_List_Table
    {
        public function search_box( $text, $input_id ){} // Remove search box
        protected function pagination( $which ){}        // Remove pagination
        protected function display_tablenav( $which ){}  // Remove navigation
    } // end class

    $mytable = new WPSE_Headless_Table; 
    // Prepare our table, this method has already run with the global table object
    $mytable->prepare_items();

    // Override the global post table object
    add_filter( 'views_edit-post', function( $views ) use ( $mytable )
    {
        global $wp_list_table;    
        // Let's clone it to the global object
        $wp_list_table = clone $mytable;
        // Let's remove the views part also
        return null;
    } );    
} );

Voici un exemple de capture d'écran:

Avant:

 before 

Après:

 after 

10
birgire

La réponse fournie par @birgire est une méthode programmatique solide de traitement de la demande mais, comme il l'a fait remarquer, ses solutions sont un peu délicates, car WP core manque d'un filtre important.

Pour supprimer simplement, ma méthode préférée serait CSS. Supposons que votre type d'article personnalisé s'appelle "Event", ce CSS fera l'affaire:

.post-type-event .subsubsub,
.post-type-event .posts-filter .tablenav .actions,
.post-type-event .posts-filter .tablenav .view-switch,
.post-type-event .posts-filter .tablenav .tablenav-pages,
.post-type-event .posts-filter .search-box {
    display: none;
}

Pour vous assurer que ces styles sont chargés sur le tableau de bord WordPress, veillez à le mettre en file d'attente via le crochet "admin_enqueue_scripts" à l'aide de l'aide wp_enqueue_style ().

EDIT: Mise à jour des styles pour séparer les "Actions" "Icônes de vue" et "Pagination" en styles distincts. Comme la pagination est très importante, j'ai pensé que vous voudriez la conserver. Supprimez simplement cette ligne du code ci-dessus pour afficher la pagination mais masquer tout le reste:

.post-type-event .posts-filter .tablenav .tablenav-pages,
5
dswebsme