Wie kann ich der Tabelle "Kategorien verwalten" eine benutzerdefinierte Spalte hinzufügen?

7

Ich habe dies mit Posts gemacht, aber ich kann nicht den richtigen Weg finden, um auf die Spalten der Kategorietabelle zu verweisen.

Ich versuche, der Tabelle eine Spalte mit dem Titel "Bild" hinzuzufügen. Wenn das Tabellenraster der Kategorien angezeigt wird und der Kategorie ein Kategoriebild zugewiesen ist, wird es im Raster angezeigt.

Der erste Schritt für mich besteht darin, den richtigen Filter für die Adressierung zu bestimmen, um die Spalte in die Tabelle einzufügen.

Ich habe jedes davon ohne Erfolg versucht ...

add_filter('manage_categories_columns', 'myFunction', 10, 2);
add_filter('manage_category_columns', 'myFunction', 10, 2);

function myFunction($cat_columns)
{
    $cat_columns['cat_image_thumb'] = 'Image';
    return $cat_columns;
}
Scott B.
quelle

Antworten:

7

Der Filter ist manage_{$screen->id}_columns, und $screen->idist edit-category, was Ihnen manage_edit-category_columns.

Ich fand dies, indem ich ein var_dump()In platzierte get_column_headers(), das von der Seite print_column_headers()aufgerufen wird wp-admin/edit-tags.php, auf der Sie die Kategorieelemente bearbeiten.

Jan Fabry
quelle
@ Jan: Danke! Das hat es für den Spaltenkopf getan. Jetzt versuche ich, anhand Ihrer Trace-Route herauszufinden, wie Sie die Zeileneinfügung hinzufügen können. Wenn ich in edit-tags.php schaue, sehe ich den Aufruf "tag_rows", der meiner Meinung nach die Zeilen erzeugt, aber ich kann diese Funktion nicht finden, um var_dump zu erhalten, um den Filternamen zu erhalten. Irgendwelche Ideen?
Scott B
@Scott: Wenn Sie über eine hierarchische Taxonomie wie Kategorien sprechen, tag_rows()Anrufe _term_rows(), welche Anrufe _tag_row(). Diese Funktion ruft die manage_{$taxonomy}_custom_columnAktion auf , die manage_category_custom_columnfür Sie wäre.
Jan Fabry
@ Jan danke. Ich kann die Aktion festlegen, aber das Echo scheint nicht zu reagieren. Action> add_action ('manage_category_custom_column', 'myFunction', 10, 2);
Scott B
@Scott: In der Tat habe ich mich geirrt, es ist ein Filter , keine Aktion, daher sollten Sie den Inhalt, den Sie anzeigen möchten, zurückgeben und nicht wiedergeben - im Gegensatz zu benutzerdefinierten Spalten, in denen Sie ihn wiedergeben müssen.
Jan Fabry
Ok, das ist besser. Funktioniert perfekt mit Filter und Return gegen Action und Echo. Danke Jan!
Scott B
5

Zusätzlich zum Beispiel von @ LeoDang wird die Spalte custom_column basierend auf den folgenden Filtern auf die benutzerdefinierte Taxonomie angewendet.

Getestet und validiert in Wordpress 3.8

1. Hinzufügen eines benutzerdefinierten Spaltenkopfs

// these filters will only affect custom column, the default column will not be affected
// filter: manage_edit-{$taxonomy}_columns
function custom_column_header( $columns ){
    $columns['header_name'] = 'Header Name for Display'; 

    return $columns;
}
add_filter( "manage_edit-shop-subcategory_columns", 'custom_column_header', 10);

2. Hinzufügen von benutzerdefinierten Spaltendaten zum entsprechenden Spaltenkopf

// parm order: value_to_display, $column_name, $tag->term_id
// filter: manage_{$taxonomy}_custom_column
function custom_column_content( $value, $column_name, $tax_id ){
    // var_dump( $column_name );
    // var_dump( $value );
    // var_dump( $tax_id );

    // for multiple custom column, you may consider using the column name to distinguish

    // although If clause is working, Switch is a more generic and well structured approach for multiple columns
    // if ($column_name === 'header_name') {
        // echo '1234';
    // }
    switch( $column_name ) {
          case 'header_name1':
               // your code here
               $value = 'header name 1';
          break;

          case 'header_name2':
               // your code here
               $value = 'header name 2';
          break;

          // ... similarly for more columns
          default:
          break;
    } 

    return $value; // this is the display value
}
add_action( "manage_shop-subcategory_custom_column", 'custom_column_content', 10, 3);

Sie können sich auch auf den online freigegebenen Kerncode beziehen, um Aktualisierungen und zusätzliche Hinweise zu erhalten.

simongcc
quelle
Alles ist in Schritt 2
auskommentiert
@tehlivi Danke für den Kommentar. Obwohl es schon älter war, habe ich es mit weiteren Erklärungen aktualisiert und könnte hoffentlich dem zukünftigen Publikum helfen.
Simongcc
4

Hinzufügen des Spaltennamens

function manage_my_category_columns($columns)
{
 // add 'My Column'
 $columns['my_column'] = 'My Column';

 return $columns;
}
add_filter('manage_edit-category_columns','manage_my_category_columns');

Als nächstes wollen wir die Daten darin ablegen:

function manage_category_custom_fields($deprecated,$column_name,$term_id)
{
 if ($column_name == 'my_column') {
   echo 'test';
 }
}
add_filter ('manage_category_custom_column', 'manage_category_custom_fields', 10,3);

Ich hoffe das war nützlich.

LeoDang
quelle
Ja, es war hilfreich. Vielen Dank, dass Sie @LeoDang
Jasom Dotnet