Hinzufügen von benutzerdefinierten Spalten zu benutzerdefinierten Beitragstypen

27

Ich habe das schon mal gemacht, aber ich habe den Namen des Hakens vergessen und kann ihn nirgendwo finden ...

Was ich versuche, ist, einige benutzerdefinierte Spalten in der Liste eines benutzerdefinierten Beitragstyps im Admin hinzuzufügen.

Klicken Sie zum Beispiel im Admin auf Artikel , um dort eine benutzerdefinierte Spalte hinzuzufügen.

Chin Leung
quelle
Ich stellte (und beantwortete) die gleiche Frage (einschließlich der Sortierbarkeit): wordpress.stackexchange.com/questions/253680/…
Beta

Antworten:

57

Die Hooks zum Erstellen benutzerdefinierter Spalten und der zugehörigen Daten für einen benutzerdefinierten Beitragstyp sind manage_{$post_type}_posts_columnsund manage_{$post_type}_posts_custom_column ist, wobei {$post_type}der Name des benutzerdefinierten Post - Typs.

In diesem Beispiel aus der Dokumentation wird die Autorenspalte entfernt und eine Taxonomie- und eine Metadatenspalte hinzugefügt:

// Add the custom columns to the book post type:
add_filter( 'manage_book_posts_columns', 'set_custom_edit_book_columns' );
function set_custom_edit_book_columns($columns) {
    unset( $columns['author'] );
    $columns['book_author'] = __( 'Author', 'your_text_domain' );
    $columns['publisher'] = __( 'Publisher', 'your_text_domain' );

    return $columns;
}

// Add the data to the custom columns for the book post type:
add_action( 'manage_book_posts_custom_column' , 'custom_book_column', 10, 2 );
function custom_book_column( $column, $post_id ) {
    switch ( $column ) {

        case 'book_author' :
            $terms = get_the_term_list( $post_id , 'book_author' , '' , ',' , '' );
            if ( is_string( $terms ) )
                echo $terms;
            else
                _e( 'Unable to get author(s)', 'your_text_domain' );
            break;

        case 'publisher' :
            echo get_post_meta( $post_id , 'publisher' , true ); 
            break;

    }
}
Dave Romsey
quelle
1
Danke für diesen Haken !!! Das ist brilliant!! Es gibt keine eindeutige Dokumentation zum Stackoverflow !!! : D Prost Kumpel
Rodrigo Zuluaga
Gibt es keine Option zum Festlegen der Spaltennummer? wie column_index[2]. Weil die custom_column am Ende der Spalte erscheint.
Dilip Gupta
@DilipGupta $ columns ist ein Array, das Sie neu
anordnen
0

Ich bin mir nicht sicher, ob es sich um benutzerdefinierte Metadaten handelt, die Sie als Spalten anzeigen möchten, aber Sie können dieses kostenlose Plugin verwenden, mit dem Sie Spalten hinzufügen können, um benutzerdefinierte Felder anzuzeigen. https://wordpress.org/plugins/codepress-admin-columns/

In der Pro-Version können Sie diese Spalten sogar filtern, sortieren und inline bearbeiten.

DGStefan
quelle
VERWENDE NICHT! Bricht Ihre Site: PHP Schwerwiegender Fehler: AC () kann nicht erneut deklariert werden (zuvor in [redigiert] \\ wp-content \\ themes \ [redigiert] \\ functions.php: 628 deklariert) in [redigiert] \\ wp-content \\ plugins \\ codepress-admin-columns \\ api.php in Zeile 9
Peter Kionga-Kamau
@ PeterKionga-Kamau Dies ist ein Kompatibilitätsproblem mit Ihrem spezifischen Thema. Der Fehler, den Sie gepostet haben, wird bei einem Standard-WP-Design (z. B. 20) nicht angezeigt. Ich benutze auch das Plugin mit dem Divi Theme und finde es ziemlich nützlich
Philipp
Gibt es nicht irgendeine Art von Namespace oder Verwendung von weniger generischen Funktionsnamen, die verwendet werden könnten, um dies zu vermeiden?
Peter Kionga-Kamau