webentwicklung-frage-antwort-db.com.de

So entfernen Sie diese Inhalte aus dem Bildschirm "Benutzerdefinierte Beitragstypenliste"

Ich ändere den Post-List-Screen eines benutzerdefinierten Post-Typs und möchte alle Inhalte auf dem Tablenav-Kopf entfernen, wie im folgenden Bild markiert.

 enter image description here 

Hat WordPress dafür einen speziellen Haken oder muss ich den schmutzigen Weg gehen?

5
KeepMove

Ich weiß nicht, was du mit schmutziger Weg meinst, hoffentlich nicht Kernbearbeitung!

Sie können es mit CSS ausblenden.

Oder Sie können es mit PHP tun - siehe unten:

Blenden Sie den Ansichtsteil aus

Sie können den Teil Ansichten mit entfernen

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

für den Beitragstyp post auf dem Bildschirm edit.php.

Das Beitragstabellenobjekt wird erstellt aus:

$wp_list_table = _get_list_table('WP_Posts_List_Table');

in der Funktion _get_list_table() ist jedoch kein Filter verfügbar.

Problemumgehung - Erweitern der Klasse WP_Posts_List_Table

Hier ist eine Problemumgehung, indem Sie die Klasse WP_Posts_List_Table erweitern und ihre Methoden im Filter views_edit-post überschreiben - Versuchen Sie dies nicht zu Hause! ;-)

/**
 * 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;
    } );    
} );

Hier ist ein Screenshot-Beispiel:

Vorher:

 before 

Nachher: ​​

 after 

10
birgire

Die Antwort von @birgire ist eine solide programmatische Möglichkeit, die Anfrage zu bearbeiten, aber wie er betonte, werden seine Lösungen etwas knifflig, da dem WP Core ein wichtiger Filter fehlt.

Um es einfach zu unterdrücken, wäre meine bevorzugte Methode CSS. Nehmen wir an, Ihr benutzerdefinierter Beitragstyp heißt "Event". Dieser CSS-Code erledigt den Trick zuverlässig:

.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;
}

Um sicherzustellen, dass diese Stile in das WordPress-Dashboard geladen werden, müssen Sie sie über den Hook "admin_enqueue_scripts" mit dem Helfer wp_enqueue_style () in die Warteschlange einreihen.

BEARBEITEN: Die Stile wurden aktualisiert, um "Aktionen", "Symbole anzeigen" und "Seitenumbruch" in separate Stile zu unterteilen. Da Paginierung ziemlich wichtig ist, dachte ich, dass Sie es behalten möchten. Wenn Sie diese Zeile einfach aus dem obigen Code löschen, wird die Paginierung angezeigt, alles andere wird jedoch ausgeblendet:

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