Agregar columnas personalizadas a tipos de publicaciones personalizadas

27

He hecho esto anteriormente pero he olvidado el nombre del gancho y no puedo encontrarlo en ningún lado ...

Lo que intento hacer es agregar algunas columnas personalizadas en la lista de un tipo de publicación personalizada en el administrador.

Por ejemplo, en el administrador, haga clic en artículos , quiero agregar una columna personalizada allí.

Chin Leung
fuente
Hice (y respondí) la misma pregunta (incluyendo cómo hacerlos ordenables): wordpress.stackexchange.com/questions/253680/…
beta

Respuestas:

57

Los ganchos para crear columnas personalizadas y sus datos asociados para un tipo de publicación personalizado son manage_{$post_type}_posts_columnsy manage_{$post_type}_posts_custom_column, respectivamente, dónde {$post_type}está el nombre del tipo de publicación personalizada.

Este ejemplo de la documentación elimina la columna de autor y agrega una columna de taxonomía y metadatos:

// Add the custom columns to the book post type:
add_filter( 'manage_book_posts_columns', 'set_custom_edit_book_columns' );
function set_custom_edit_book_columns($columns) {
    unset( $columns['author'] );
    $columns['book_author'] = __( 'Author', 'your_text_domain' );
    $columns['publisher'] = __( 'Publisher', 'your_text_domain' );

    return $columns;
}

// Add the data to the custom columns for the book post type:
add_action( 'manage_book_posts_custom_column' , 'custom_book_column', 10, 2 );
function custom_book_column( $column, $post_id ) {
    switch ( $column ) {

        case 'book_author' :
            $terms = get_the_term_list( $post_id , 'book_author' , '' , ',' , '' );
            if ( is_string( $terms ) )
                echo $terms;
            else
                _e( 'Unable to get author(s)', 'your_text_domain' );
            break;

        case 'publisher' :
            echo get_post_meta( $post_id , 'publisher' , true ); 
            break;

    }
}
Dave Romsey
fuente
1
¡Gracias por este gancho! ¡¡Esto es brillante!! ¡No hay documentación clara sobre stackoverflow! : D Cheers mate
Rodrigo Zuluaga
¿No hay ninguna opción para establecer el número de columna? como column_index[2]. Porque la columna personalizada aparece al final de la columna.
Dilip Gupta
@DilipGupta $ columnas es una matriz, puede reordenar antes de devolverla
fogx
0

No estoy seguro de si hay metadatos personalizados predeterminados que desea mostrar como columnas, pero podría considerar usar este complemento gratuito que le permite agregar columnas para mostrar campos personalizados. https://wordpress.org/plugins/codepress-admin-columns/

La versión pro incluso le permite agregar filtrado, clasificación y edición en línea a esas columnas.

DGStefan
fuente
¡NO UTILICE! Romperá su sitio: PHP Error grave: no se puede volver a declarar AC () (previamente declarado en [redactado] \\ wp-content \\ themes \ [redacted] \\ functions.php: 628) en [redactado] \\ wp-content \\ plugins \\ codepress-admin-columnas \\ api.php en la línea 9
Peter Kionga-Kamau
@ PeterKionga-Kamau, este es un problema de compatibilidad con su tema específico. El error que publicó no aparecerá con un tema de WP predeterminado (como veinte); También uso el complemento con el tema Divi y lo encuentro bastante útil
Philipp
¿No hay algún tipo de espacio de nombres o uso de nombres de funciones menos genéricos que podrían usarse para evitar esto?
Peter Kionga-Kamau