webentwicklung-frage-antwort-db.com.de

Wie entferne ich bestimmte Bildschirmoptionen und Tabellenspalten aus dem Beitragstyp in wp_list_table?

Auf der Seite, wo wir alle Beiträge aufgelistet haben: example.domain.com/wp-admin/edit.php

In der oberen rechten Ecke befindet sich eine Registerkarte Bildschirmoptionen. Wenn Sie darauf klicken, wird ein Menü nach unten verschoben. In diesem Dropdown-Menü sind Kontrollkästchen enthalten. Wenn Sie diese Kontrollkästchen aktivieren oder deaktivieren, werden bestimmte Spalten in der Beitragstabelle angezeigt bzw. ausgeblendet, je nachdem, ob sie aktiviert sind oder nicht.

Ich suche nach einer Möglichkeit, programmgesteuert eine Liste aller dieser registrierten Bildschirmoptionen für diesen Beitragstyp zu erhalten (Standardbeitragstyp: Beitrag). Sobald ich eine Liste dieser registrierten Bildschirmoptionen erhalte, überprüfe ich, ob eine bestimmte Reihe von Optionen aufgelistet ist. Wenn sie mit einem aufgelisteten Element übereinstimmen, plane ich, diese Optionen zu entfernen.

WordPress - Screen Options - List Posts Klicken Sie hier, um den Screenshot in voller Größe zu sehen

Frage Wie kann ich programmgesteuert eine Liste aller registrierten Bildschirmoptionen für Beitragstypen abrufen (Seite mit einer Auflistung aller Beiträge)?

Suchen Sie nach einer Lösung, die der Lösung für Entfernen bestimmter Bildschirmoptionen und Metafelder aus "Post-Typ hinzufügen/bearbeiten" ähnlich ist.

3
Michael Ecklund

Sie müssen lediglich die Variable $columns ändern, die während der Listenanzeige verwendet wird. Sie können sie mit den Hooks 'manage_posts_columns' und 'manage_pages_columns' für post_type='post' bzw. post_type='page' ändern. Wenn Sie benutzerdefinierte Beitragstypen ignorieren möchten, können Sie den zweiten an 'manage_posts_columns' übergebenen Parameter wie in meinem Beispiel überprüfen, um zu zeigen, wie.

Nehmen wir also an, Sie möchten die Bildschirmoption "Comments" und die zugehörige Spalte, die Sie in diesem Screenshot für Posts bzw. Pages sehen, entfernen:

Fügen Sie die folgende Klasse in die functions.php-Datei Ihres Themas oder in ein Plugin ein, das Sie möglicherweise erstellen, und dieser Code entfernt die Bildschirmoption "Kommentare" und die zugehörige Spalte (Da diese Antwort Ihrer ähnelt andere Frage , ich habe dem Klassennamen einen "2" hinzugefügt, daher in Michael_Ecklunds_Admin_Customizer2):

class Michael_Ecklunds_Admin_Customizer2 {
  function __construct() {
    add_action( 'manage_pages_columns', array( $this, 'manage_columns' ) );
    add_action( 'manage_posts_columns', array( $this, 'manage_columns' ), 10, 2 );
  }
  function manage_columns( $columns, $post_type = 'page' ) { //2nd param not passed for pages
    if ( in_array( $post_type, array( 'post', 'page' ) ) ) {
      // This is only for posts and pages, 'if (in_array(...))' just illustrates how.
      unset( $columns['comments'] );
    }
    return $columns;
  }
}
new Michael_Ecklunds_Admin_Customizer2();

Und so sieht es aus, nachdem Sie den obigen Code zu einer WordPress 3.4-Site hinzugefügt haben:

Mit dem Zend-Debugger in PhpStorm hier ist die Überprüfung von $columns im 'manage_posts_columns'-Hook, damit Sie sehen können, welche Werte eine Standardinstallation von WordPress 3.4 für die Post-Bearbeitungsliste (I ' Ich habe die Array-Indizes, auf die ich in meinem Beispiel verwiesen habe, eingekreist, dh $columns['comments']:

Hoffentlich ist es das, wonach Sie gesucht haben?

9
MikeSchinkel