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í.


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;

    }
}

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.


¡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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.