Cómo agregar el ID de categoría a la página de administración

4

Quiero agregar el ID de categorías a la página de administración. Lo llamo para mi functions.php : require_once('includes/categories_custom_id.php'); La parte del código:

function categoriesColumnsHeader($columns) {
        $columns['catID'] = __('ID');
        return $columns;
}
add_filter( 'manage_categories_columns', 'categoriesColumnsHeader' );
function categoriesColumnsRow($argument, $columnName, $categoryID){
        if($columnName == 'catID'){
                return $categoryID;
        }
}
add_filter( 'manage_categories_custom_column', 'categoriesColumnsRow', 10, 3 );

Pero no funciona. ¿Alguna idea de cómo hacerlo?

Gracias de antemano.

    
pregunta MikeD 28.12.2012 - 18:16

2 respuestas

3

Los ganchos para taxonomías son:

  • "manage_edit-${taxonomy}_columns" para el encabezado
  • "manage_edit-${taxonomy}_sortable_columns" para hacer que las columnas se puedan ordenar
  • "manage_${taxonomy}_custom_column" para el contenido de la celda

Para capturar todas las taxonomías escribe:

foreach ( get_taxonomies() as $taxonomy ) {
    add_action( "manage_edit-${taxonomy}_columns",          't5_add_col' );
    add_filter( "manage_edit-${taxonomy}_sortable_columns", 't5_add_col' );
    add_filter( "manage_${taxonomy}_custom_column",         't5_show_id', 10, 3 );
}
add_action( 'admin_print_styles-edit-tags.php', 't5_tax_id_style' );

function t5_add_col( $columns )
{
    return $columns + array ( 'tax_id' => 'ID' );
}
function t5_show_id( $v, $name, $id )
{    
    return 'tax_id' === $name ? $id : $v;
}
function t5_tax_id_style()
{
    print '<style>#tax_id{width:4em}</style>';
}
    
respondido por el fuxia 28.12.2012 - 18:51
0

Lo tenía casi todo bien, pero los nombres de los ganchos, ¿de dónde los sacó?

Los siguientes son los correctos. Estoy agregando dos funciones adicionales, una agregará nuestra columna como la primera (en lugar de ser la última, creo que tiene más sentido para una columna de ID). Y el segundo es una simple corrección de CSS para el ancho de columna.

Código basado en esta Q & A: Multisite: ¿Proteger categorías de la eliminación?

add_filter( 'manage_edit-category_columns', 'wpse_77532_cat_edit_columns' );
add_filter( 'manage_category_custom_column', 'wpse_77532_cat_custom_columns', 10, 3 );
add_action( 'admin_head-edit-tags.php', 'wpse_77532_column_width' );

/**
 * Register the ID column
 */
function wpse_77532_cat_edit_columns( $columns )
{
    $in = array( "cat_id" => "ID" );
    $columns = wpse_77532_array_push_after( $columns, $in, 0 );
    return $columns;
}   

/**
 * Print the ID column
 */
function wpse_77532_cat_custom_columns( $value, $name, $cat_id )
{
    if( 'cat_id' == $name ) 
        echo $cat_id;
}

/**
 * CSS to reduce the column width
 */
function wpse_77532_column_width()
{
    // Tags page, exit earlier
    if( 'category' != $_GET['taxonomy'] )
        return;

    echo '<style>.column-cat_id {width:3%}</style>';
}

/**
 * Insert an element at the beggining of the array
 */
function wpse_77532_array_push_after( $src, $in, $pos )
{
    if ( is_int( $pos ) )
        $R = array_merge( array_slice( $src, 0, $pos + 1 ), $in, array_slice( $src, $pos + 1 ) );
    else
    {
        foreach ( $src as $k => $v )
        {
            $R[$k] = $v;
            if ( $k == $pos )
                $R       = array_merge( $R, $in );
        }
    }
    return $R;
}

Resultar

    
respondido por el brasofilo 28.12.2012 - 18:38

Lea otras preguntas en las etiquetas