Soporte » Plugins y Hacks » Hacks » Como agregar un filtro a tabla generada usando la clase WP_List_Table

  • edg4r

    (@edg4r)


    Hola, me veo en la necesidad de poder filtrar los resultados que se muestran en la tabla que se genera cuando desde el dashboard se selecciona ver todas las paginas (archivo edit.php). Segun veo en el codigo fuente la tabla se crea usando la clase WP_Posts_List_Table que deriva de WP_List_Table, y dentro de esta clase existe la funcion extra_tablenav que es donde se agregan los filtros que deseamos que se apliquen sobre la tabla. La clase WP_Posts_List_Table sobreescribe dicha funcion y hace que se muestre en la parte superior de la tabla un dropdown que sirve para filtrar por fechas, lo que yo necesito es mostrar tambien un dropdown que permita filtrar por otros campos por ejemplo por el id de la pagina, en lo que necesito ayuda es saber como aplicar el filtro, es decir manejar en el codigo cuando se esta haciendo una peticion de filtro y segun el filtro seleccionado en el dropdown menu ejecutar una u otra consulta para despues volcar los resultados en la tabla.

    Esta es la funcion extra_tablenav en el archivo class-wp-post-list-table (wp-admin/includes)

    function extra_tablenav( $which ) {
    	global $post_type_object, $cat;
    ?>
    	<div class="alignleft actions">
    <?php
    	if ( 'top' == $which && !is_singular() ) {
    
    	    $this->months_dropdown( $post_type_object->name );
    
    	    if ( is_object_in_taxonomy( $post_type_object->name,  'category' ) ) {
    		$dropdown_options = array(
    		'show_option_all' => __( 'View all categories' ),
    					'hide_empty' => 0,
    					'hierarchical' => 1,
    					'show_count' => 0,
    					'orderby' => 'name',
    					'selected' => $cat
    				);
    				wp_dropdown_categories( $dropdown_options );
    			}
    			do_action( 'restrict_manage_posts' );
    			submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) );
    		}
    
    		if ( $this->is_trash && current_user_can( $post_type_object->cap->edit_others_posts ) ) {
    			submit_button( __( 'Empty Trash' ), 'button-secondary apply', 'delete_all', false );
    		}
    ?>
    		</div>
    <?php
    	}

    Aca entiendo que lo que hace es imprimir el dropdown con las fechas, lo que no entiendo es la parte de:

    do_action( 'restrict_manage_posts' );
    submit_button( __( 'Filter' ), 'secondary', false, false, array( 'id' => 'post-query-submit' ) );

    No se si se podrá añadir esta funcionalidad a la clase existente WP_Posts_List_Table o si debo de crear yo mismo la tabla, lo digo por la parte de modificar la consulta pues en el codigo no encuentro donde es que se envia la consulta para obtener las paginas.

  • El debate ‘Como agregar un filtro a tabla generada usando la clase WP_List_Table’ está cerrado a nuevas respuestas.