Como adicionar o ID da categoria à página de administração

4

Eu quero adicionar o ID das categorias à página de administração. Eu chamo isso para meu functions.php : require_once('includes/categories_custom_id.php'); A parte do 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 );

Mas isso não funciona. Alguma ideia, como fazer isso?

Obrigado antecipadamente.

    
por MikeD 28.12.2012 / 18:16

2 respostas

3

Os ganchos para taxonomias são:

  • "manage_edit-${taxonomy}_columns" para o cabeçalho
  • "manage_edit-${taxonomy}_sortable_columns" para tornar as colunas classificáveis
  • "manage_${taxonomy}_custom_column" para o conteúdo da célula

Para pegar todas as taxonomias, escreva:

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>';
}
    
por fuxia 28.12.2012 / 18:51
0

Você tinha quase tudo certo, mas os nomes dos ganchos, de onde você tirou esses?

Os seguintes são os corretos. Estou adicionando duas funções extras, uma adicionará nossa coluna como a primeira (em vez de ser a última, acho que faz mais sentido para uma coluna de ID). E o segundo é uma correção CSS simples para a largura da coluna.

Código baseado neste Q & A: Multisite - Proteger as categorias de exclusão?

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

Resultado:

    
por brasofilo 28.12.2012 / 18:38