Reemplazar la tabla de lista de un tipo de publicación

2

¿Hay alguna manera de reemplazar el objeto WP_List_Table de un tipo de publicación para mostrar dicho tipo de publicación de manera diferente en la página Admin edit.php?

    
pregunta Manny Fleurmond 16.01.2014 - 06:50

2 respuestas

5

No, no puede reemplazar la tabla de la lista. No hay filtro, todo está codificado.

Pero puede cambiar el tipo de publicación registro , establecer show_ui en FALSE para evitar la página incorporada y agregar una página personalizada para el listado de tipo de publicación para mostrar los elementos editables .

add_action( 'wp_loaded', function(){
    register_post_type(
        'test',
        array(
            'labels' => array(
                'name' => 'TEST'
            ),
            'public' => TRUE,
            'show_ui' => FALSE
        )
    );
});

add_action( 'admin_menu', function(){
    add_object_page(
        'TEST',
        'TEST',
        'edit_test',
        'test',
        function(){
            echo 'test'; // list post type items here
        }
    );
});

Resultado

    
respondido por el fuxia 16.01.2014 - 07:17
3

Este ejemplo se aplica al tipo de publicación post . Esto está aprovechando la clase WP_Posts_List_Table y el filtro views-edit-{$post_type} . Parece que esta no es la mejor manera, pero funciona:

Asegúrate de que la clase esté cargada en tu página:

if(!class_exists('WP_List_Table')){
    require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
}
if(!class_exists('WP_Posts_List_Table')){
    require_once( ABSPATH . 'wp-admin/includes/class-wp-posts-list-table.php' );
}

Extienda la clase WP_Posts_List_Table para eliminar la tabla de la lista y definir el contenido personalizado:

class wpse_CustomTable extends WP_Posts_List_Table
{       
    // remove search box
    public function search_box( $text, $input_id ){ }

    // Your custom list table is here
    public function display() {
        echo "Test";
    }
}

Úsalo dentro de un gancho de filtro:

// hook into 'views-edit'
add_filter( 'views_edit-post',  "sstssfb_custom_list_table");    
// Override the post table object
function sstssfb_custom_list_table() {
    global $wp_list_table;
    $mylisttable = new wpse_CustomTable();
    $wp_list_table = $mylisttable ;    
}

Resultar

    
respondido por el KeepMove 12.10.2015 - 22:54

Lea otras preguntas en las etiquetas