Agregar columna personalizada al resumen de tipo de publicación personalizada en el backend

23 ene 2017, 22:05:21
Vistas: 14.6K
Votos: 2

Tengo un tipo de publicación personalizada llamado eventos. En el backend/administración puedo listar todos estos tipos de publicaciones personalizadas, es decir, los eventos:

Vista del listado de eventos en el administrador de WordPress

Como puedes ver, hay tres columnas en este resumen: Título, Etiquetas y Fecha. Cada uno de estos eventos tiene un campo personalizado llamado eventDate.

Mi pregunta ahora es, ¿cómo puedo agregar una columna ordenable eventDate al resumen de eventos (mostrado arriba)?

1
Comentarios

vale, acabo de encontrar este enlace: http://www.deluxeblogtips.com/add-custom-column/ PERO ¿cómo puedo hacer que la columna sea ordenable?

beta beta
23 ene 2017 22:16:57
Todas las respuestas a la pregunta 3
0

Vale, encontré una respuesta por mi cuenta. Para ayudar a las personas que lean esto en el futuro, esto es lo que hice:

1) Esto explica cómo añadir una columna: http://www.deluxeblogtips.com/add-custom-column/

2) Esto explica cómo añadir una columna ordenable: https://wordpress.org/support/topic/admin-column-sorting/

23 ene 2017 22:49:31
2

Los hooks para crear columnas personalizadas y sus datos asociados para un tipo de contenido personalizado son manage_{$post_type}_posts_columns y manage_{$post_type}_posts_custom_column respectivamente, donde {$post_type} es el nombre del tipo de contenido personalizado.

Este ejemplo de la documentación elimina la columna de autor y añade columnas para taxonomía y metadatos:

// Añadir columnas personalizadas al tipo de contenido 'book':
    add_filter( 'manage_book_posts_columns', 'set_custom_edit_book_columns' );
    function set_custom_edit_book_columns($columns) {
        unset( $columns['author'] );
        $columns['book_author'] = __( 'Autor', 'your_text_domain' );
        $columns['publisher'] = __( 'Editorial', 'your_text_domain' );

        return $columns;
    }

    // Añadir los datos a las columnas personalizadas para el tipo de contenido 'book':
    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( 'No se pueden obtener los autores', 'your_text_domain' );
                break;

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

        }
    }

Copiado de una respuesta existente.

10 oct 2017 13:56:19
Comentarios

¿La columna es ordenable?

beta beta
10 oct 2017 14:35:55

no, estas columnas no son ordenables... tienes que hacerlas ordenables..

Pravin Work Pravin Work
11 oct 2017 10:47:03
0

Aquí está el código completo para esto:

// Agregar columna personalizada 'Fecha del Evento' a la lista de videos
add_filter('manage_edit-video_columns', 'mis_columnas');
function mis_columnas($columnas) {
    $columnas['eventDate'] = 'Fecha del Evento';
    return $columnas;
}

// Mostrar el valor de la columna personalizada
add_action('manage_posts_custom_column',  'mostrar_mis_columnas');
function mostrar_mis_columnas($nombre) {
    global $post;
    switch ($nombre) {
        case 'eventDate':
            $fechaEvento = get_post_meta($post->ID, 'eventDate', true);
            echo $fechaEvento;
    }
}

// Hacer que la columna sea ordenable
add_filter( 'manage_edit-video_sortable_columns', 'mi_columna_fecha_ordenable' );
function mi_columna_fecha_ordenable( $columnas ) {
    $columnas['eventDate'] = 'Fecha del Evento';

    return $columnas;
}

Gracias

10 oct 2017 15:06:10