Cómo agregar una columna personalizada a la tabla "Administrar categorías"

13 ene 2011, 15:58:13
Vistas: 14.2K
Votos: 9

He hecho esto con entradas, pero no puedo encontrar la forma correcta de referenciar las columnas de la tabla de categorías.

Estoy intentando añadir una columna titulada "Imagen" a la tabla, para que cuando se muestre la cuadrícula de categorías, si hay una imagen asignada a la categoría, aparezca en la cuadrícula.

El primer paso para mí es determinar el filtro adecuado para insertar la columna en la tabla.

He probado cada uno de estos sin éxito...

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'] = 'Imagen';
    return $cat_columns;
}
0
Todas las respuestas a la pregunta 3
1
10

Agregando el nombre de la columna

function manage_my_category_columns($columns)
{
 // agregar 'Mi Columna'
 $columns['my_column'] = 'Mi Columna';

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

Luego queremos colocar los datos en ella:

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

Espero que esto haya sido útil.

8 may 2013 06:03:29
Comentarios

Sí, fue útil. Gracias @LeoDang

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

El filtro es manage_{$screen->id}_columns, y $screen->id es edit-category, lo que te da manage_edit-category_columns.

Descubrí esto colocando un var_dump() en get_column_headers(), que es llamado por print_column_headers(), el cual se llama en wp-admin/edit-tags.php, la página donde editas los elementos de categorías.

13 ene 2011 16:05:03
Comentarios

@Jan: ¡Gracias! Eso resolvió lo del encabezado de columna. Ahora estoy intentando usar tu rastreo para descubrir cómo añadir la inserción de filas. Mirando en edit-tags.php veo la llamada "tag_rows", que creo que es lo que genera las filas, pero no logro localizar esa función para hacer un var_dump y obtener el nombre del filtro. ¿Alguna idea?

Scott B Scott B
13 ene 2011 17:02:30

@Scott: Si te refieres a una taxonomía jerárquica como categorías, tag_rows() llama a _term_rows(), que a su vez llama a _tag_row(). Esta función llama a la acción manage_{$taxonomy}_custom_column, que en tu caso sería manage_category_custom_column.

Jan Fabry Jan Fabry
13 ene 2011 17:10:21

@Jan gracias. Puedo establecer la acción, pero no logro que el echo responda.. acción > add_action('manage_category_custom_column', 'myFunction', 10, 2);

Scott B Scott B
13 ene 2011 17:27:37

@Scott: En efecto, estaba equivocado, es un filtro, no una acción, por lo que debes retornar el contenido que quieres mostrar, no hacer echo - a diferencia de las columnas personalizadas de entradas, donde sí debes hacer echo.

Jan Fabry Jan Fabry
13 ene 2011 17:35:18

OK, eso está mejor. Funciona perfectamente con filter y return vs action y echo. ¡Gracias Jan!

Scott B Scott B
13 ene 2011 17:37:21

@Jan, Parece que el ID de la categoría no está siendo pasado a la función. Tengo dos argumentos en la llamada de la función, el primero está vacío y el segundo contiene el ID de la fila personalizada. ¿Debería llevar esto a una pregunta dedicada ya que básicamente hemos respondido la original?

Scott B Scott B
13 ene 2011 17:47:16

@Scott: Probablemente sea mejor hacerlo como una nueva pregunta.

Jan Fabry Jan Fabry
13 ene 2011 17:49:47

Acabo de encontrarlo. Es el tercer argumento. Tuve que cambiar el filtro a 10,3 y la función se convierte en myColumnRows($empty_arg, $column_name, $category_id)

Scott B Scott B
13 ene 2011 17:57:52

@Jan, ¿es común que el primer argumento esté vacío?

Scott B Scott B
13 ene 2011 17:59:41

@Scott: Aquí es normal: si ningún plugin proporciona algo para mostrar en la columna, debería estar vacío. Recuerda, esto es un filtro: el primer argumento es el valor que tu callback modificará. echo '<td>'; do_action( 'custom_column' ); echo '</td>'; convertido a un filtro se convierte en echo '<td>'; echo apply_filters( 'custom_column', '' ); echo '</td>';.

Jan Fabry Jan Fabry
13 ene 2011 18:03:31
Mostrar los 5 comentarios restantes
2

Además del ejemplo de @LeoDang, el custom_column se aplica a taxonomías personalizadas basado en los siguientes filtros.

Probado y validado en WordPress 3.8

1.Añadiendo encabezado de columna personalizada

// estos filtros solo afectarán la columna personalizada, la columna por defecto no se verá afectada
// filter: manage_edit-{$taxonomy}_columns
function custom_column_header( $columns ){
    $columns['header_name'] = 'Nombre del Encabezado para Mostrar'; 

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

2.Añadiendo datos de columna personalizada al encabezado de columna correspondiente

// orden de parámetros: valor_a_mostrar, $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 );

    // para múltiples columnas personalizadas, puedes considerar usar el nombre de la columna para distinguir

    // aunque la cláusula If funciona, Switch es un enfoque más genérico y bien estructurado para múltiples columnas
    // if ($column_name === 'header_name') {
        // echo '1234';
    // }
    switch( $column_name ) {
          case 'header_name1':
               // tu código aquí
               $value = 'nombre de encabezado 1';
          break;

          case 'header_name2':
               // tu código aquí
               $value = 'nombre de encabezado 2';
          break;

          // ... similarmente para más columnas
          default:
          break;
    } 

    return $value; // este es el valor a mostrar
}
add_action( "manage_shop-subcategory_custom_column", 'custom_column_content', 10, 3);

También puedes consultar el código compartido en gist para cualquier actualización y notas adicionales.

13 ene 2014 08:33:33
Comentarios

Todo está comentado en el paso 2.

tehlivi tehlivi
12 jun 2017 20:43:39

@tehlivi Gracias por el comentario. Aunque fue hace tiempo, lo actualicé con más explicaciones y espero que pueda ayudar a futuros lectores.

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