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.
Hat WordPress dafür einen speziellen Haken oder muss ich den schmutzigen Weg gehen?
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:
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.
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:
Nachher:
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,