Cum pot adăuga o coloană personalizată în tabelul "Gestionare categorii"?

13 ian. 2011, 15:58:13
Vizualizări: 14.2K
Voturi: 9

Am făcut asta pentru articole, dar nu găsesc metoda corectă de a referenția coloanele tabelului de categorii.

Încerc să adaug o coloană intitulată "Imagine" în tabel, astfel încât atunci când grila tabelului de categorii este afișată, dacă există o imagine de categorie asignată, aceasta să apară în grilă.

Primul pas pentru mine este să determin filtrul corect pe care să-l abordez pentru a insera coloana în tabel.

Am încercat fiecare dintre acestea fără succes...

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'] = 'Imagine';
    return $cat_columns;
}
0
Toate răspunsurile la întrebare 3
1
10

Adăugarea numelui coloanei

function manage_my_category_columns($columns)
{
 // adaugă 'Coloana Mea'
 $columns['my_column'] = 'Coloana Mea';

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

Apoi dorim să introducem datele în ea:

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);

Sper că acest lucru a fost util.

8 mai 2013 06:03:29
Comentarii

Da, a fost util. Mulțumesc @LeoDang

Jasom Dotnet Jasom Dotnet
8 mai 2019 16:32:23
10

Filtrul este manage_{$screen->id}_columns, iar $screen->id este edit-category, oferindu-ți manage_edit-category_columns.

Am descoperit acest lucru plasând un var_dump() în get_column_headers(), care este apelat de print_column_headers(), la rândul său apelat în wp-admin/edit-tags.php, pagina unde editezi elementele de categorie.

13 ian. 2011 16:05:03
Comentarii

@Jan: Mulțumesc! Asta a funcționat pentru antetul coloanei. Acum încerc să folosesc urmărirea ta pentru a afla cum să adaug inserarea rândului. Când mă uit în edit-tags.php văd apelul "tag_rows", care cred că este ceea ce creează rândurile, dar nu pot găsi acea funcție pentru a face var_dump și a obține numele filtrului. Ai vreo idee?

Scott B Scott B
13 ian. 2011 17:02:30

@Scott: Dacă vorbești despre o taxonomie ierarhică precum categoriile, tag_rows() apelează _term_rows(), care la rândul ei apelează _tag_row(). Această funcție apelează acțiunea manage_{$taxonomy}_custom_column, care în cazul tău ar fi manage_category_custom_column.

Jan Fabry Jan Fabry
13 ian. 2011 17:10:21

@Jan mulțumesc. Am reușit să setez acțiunea, dar nu reușesc să fac echo să funcționeze.. acțiune > add_action('manage_category_custom_column', 'myFunction', 10, 2);

Scott B Scott B
13 ian. 2011 17:27:37

@Scott: Într-adevăr, am greșit, este un filtru, nu o acțiune, așa că ar trebui să returnați conținutul pe care doriți să îl afișați, nu să îl ecouați - spre deosebire de coloanele personalizate ale postărilor, unde trebuie să le ecouați.

Jan Fabry Jan Fabry
13 ian. 2011 17:35:18

OK, asta e mai bine. Funcționează perfect cu filtru și return vs acțiune și echo. Mulțumesc Jan!

Scott B Scott B
13 ian. 2011 17:37:21

@Jan, Se pare că ID-ul categoriei nu este transmis funcției. Am două argumente în apelul funcției, primul este gol și al doilea conține ID-ul rândului personalizat. Ar trebui să duc asta la o întrebare dedicată, deoarece am răspuns deja la cea originală?

Scott B Scott B
13 ian. 2011 17:47:16

@Scott: Probabil cel mai bine este să o întrebi ca o nouă întrebare.

Jan Fabry Jan Fabry
13 ian. 2011 17:49:47

Tocmai l-am găsit. Este al treilea argument. A trebuit să schimb filtrul la 10,3 și funcția devine myColumnRows($empty_arg, $column_name, $category_id)

Scott B Scott B
13 ian. 2011 17:57:52

@Jan, este comun ca primul argument să fie gol?

Scott B Scott B
13 ian. 2011 17:59:41

@Scott: Aici este normal: dacă niciun plugin nu oferă nimic de afișat în coloană, ar trebui să fie gol. Ține minte, acesta este un filtru: primul argument este valoarea pe care callback-ul tău o va modifica. echo '<td>'; do_action( 'custom_column' ); echo '</td>'; convertit într-un filtru devine echo '<td>'; echo apply_filters( 'custom_column', '' ); echo '</td>';.

Jan Fabry Jan Fabry
13 ian. 2011 18:03:31
Arată celelalte 5 comentarii
2

În plus față de exemplul lui @LeoDang, custom_column este aplicat la taxonomia personalizată pe baza următoarelor filtre.

Testat și validat în Wordpress 3.8

1.Adăugarea antetului coloanei personalizate

// aceste filtre vor afecta doar coloana personalizată, coloana implicită nu va fi afectată
// filtru: manage_edit-{$taxonomy}_columns
function custom_column_header( $columns ){
    $columns['header_name'] = 'Nume Antet pentru Afișare'; 

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

2.Adăugarea datelor coloanei personalizate la antetul corespunzător

// ordinea parametrilor: valoare_de_afișat, $column_name, $tag->term_id
// filtru: manage_{$taxonomy}_custom_column
function custom_column_content( $value, $column_name, $tax_id ){
    // var_dump( $column_name );
    // var_dump( $value );
    // var_dump( $tax_id );

    // pentru mai multe coloane personalizate, puteți lua în considerare utilizarea numelui coloanei pentru a le distinge

    // deși clauza If funcționează, Switch este o abordare mai generică și mai bine structurată pentru mai multe coloane
    // if ($column_name === 'header_name') {
        // echo '1234';
    // }
    switch( $column_name ) {
          case 'header_name1':
               // codul tău aici
               $value = 'nume antet 1';
          break;

          case 'header_name2':
               // codul tău aici
               $value = 'nume antet 2';
          break;

          // ... similar pentru mai multe coloane
          default:
          break;
    } 

    return $value; // aceasta este valoarea afișată
}
add_action( "manage_shop-subcategory_custom_column", 'custom_column_content', 10, 3);

De asemenea, puteți consulta codul gist partajat online pentru orice actualizare și note suplimentare.

13 ian. 2014 08:33:33
Comentarii

Totul este comentat în pasul 2.

tehlivi tehlivi
12 iun. 2017 20:43:39

@tehlivi Mulțumesc pentru comentariu. Deși a fost acum ceva timp, l-am actualizat cu mai multe explicații și sper să fie de ajutor pentru viitorii cititori.

西門 正 Code Guy - JingCodeGuy 西門 正 Code Guy - JingCodeGuy
7 apr. 2020 01:09:26