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.


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;

    }
}

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.