buscando usuarios con el complemento WP_List_Table

4

Estoy intentando desarrollar un complemento que buscará y devolverá a mis usuarios para poder editar otros metatdatos que les pertenecen. He estado utilizando el complemento listado en el Codex como mi punto de partida.

Tengo mi tabla que aparece con los usuarios de un WP_User_Query. Pero estoy teniendo problemas con el filtrado de la consulta con la entrada de búsqueda.

Wildcard search mysearch devolverá la tabla correctamente, pero al pasar a la segunda página, volverá a una búsqueda en blanco. La variable de búsqueda no se está colocando en la url. ¿Cómo le paso esto a la url? (la paginación se pasa solamente)

¿También hay una manera de cambiarlo para que no tenga que estar físicamente en "*" antes y después de los parámetros de búsqueda y lo haya hecho en el código?

Aquí está mi consulta:

function prepare_items() {
    global $wpdb;

    $searchcol= array(
    'ID',
    'user_email',
    'user_login',
    'user_nicename',
    'user_url',
    'display_name'
    );

    $orderby = !empty($_GET["orderby"]) ? mysql_real_escape_string($_GET["orderby"]) : 'email';
    $order = !empty($_GET["order"]) ? mysql_real_escape_string($_GET["order"]) : 'ASC';

    $args  = array(
    'fields' => 'all_with_meta', 
    'orderby' => $orderby , 
    'order' => $order , 
    'search' =>$_REQUEST["s"] ,
    'search_columns' => $searchcol
    );

    $my_query = new WP_User_Query( $args );
}

y aquí está mi campo de búsqueda:

    function my_render_list_table_page(){
    global $my_list_table_sample_page, $wpdb;

    $my_list_table_sample_page->prepare_items();
    <form action="" method="post" >
<?php
   $my_list_table_sample_page->search_box( __( 'Search Users' ), 'user' ); 
   $my_list_table_sample_page->display(); 
   $my_list_table_sample_page->display();
   echo '</form>'; 
}
    
pregunta Ken 31.07.2012 - 17:41

2 respuestas

2

Brian tiene razón. Al cambiar el formulario para usar obtener en lugar de publicación y luego usar $ _REQUEST para recuperarlo, debería funcionar, y es para mí.

// Fetch, prepare, sort, and filter our data.
if( isset( $_REQUEST ["s"] ) ){

// Form that displays the table and also contains the search_box()
<form id="table-class-filter" method="get" class="table-class-admin-form">
    
respondido por el oooorgle 30.12.2015 - 11:21
1

Como señaló Brian, su formulario envía los datos a través de POST, y usted lo obtiene a través de GET. Cambie por el método a "GET" o use la variable $ _POST. (Pero tenga en cuenta que su término de búsqueda se transmite usando su código actual, porque tanto POST como GET llenan la variable $ _REQUEST).

Puede hacer que la búsqueda sea más flexible asegurándose de que esté rodeada de caracteres comodín (asterisco). Algo como esto debería hacer el truco:

$search = preg_replace( "^$\**(.*)\**$?#", "*$1*", $_REQUEST["s"] );

Esto permitirá que la entrada de búsqueda se haya enviado con cero o más asteriscos iniciales y finales, y garantizará que su cadena de búsqueda esté precedida y seguida por un solo asterisco.

    
respondido por el Stephen M. Harris 05.02.2013 - 03:43

Lea otras preguntas en las etiquetas