使用WP_LIST_TABLE插件搜索用户

时间:2012-07-31 作者:Ken

我正在尝试开发一个插件,该插件将搜索并返回我的用户,以便我可以编辑属于他们的其他元数据。我一直在使用Codex 作为我的出发点。

我的表显示在WP\\u User\\u查询中的用户中。但我在使用搜索输入过滤查询时遇到了问题。

通配符搜索mysearch将正确返回表,但转到第二页将返回空白搜索。搜索变量未放置在url中。如何将其传递到url?(仅通过分页)

还有没有一种方法可以改变它,这样我就不必在搜索参数之前和之后在物理上处于“*”,并在代码中完成它?

以下是我的疑问:

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 );
}
这是我的搜索字段:

    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>\'; 
}

2 个回复
SO网友:oooorgle

布莱恩是对的。通过将表单更改为使用get而不是post,然后使用$\\u请求来获取它应该可以工作,这对我来说很有用。

// 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">

SO网友:Stephen M. Harris

正如Brian所指出的,表单通过POST发送数据,而您通过GET获取数据。将method更改为“GET”,或者使用$\\u POST变量。(但请注意,您的搜索词是使用当前代码传递的,因为POST和GET都填充了$\\u请求变量)。

通过确保搜索周围有通配符(星号)字符,可以使搜索更加灵活。像这样的事情应该可以做到:

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

这将允许使用零个或多个前导/尾随星号提交搜索输入,并确保搜索字符串的前后都有一个星号。

结束

相关推荐

从Single.php重定向至404.php

我有一种情况,我想重定向用户从单一。php到我的404。php我该怎么做?我在单曲里就是这样做的。phpheader(\"HTTP/1.0 404 Not Found\"); header(\"Location: \".bloginfo(\'template_url\').\"/404.php\"); exit(); But when I check the http responses I get a 302 response instead of the 404Importan