Я работаю с Wordpress. Я купил плагин, который я изменяю, добавляя некоторую дополнительную информацию, но я не могу отфильтровать по фильтру search_box на этой вкладке.
Я хочу отфильтровать по DNI и Tarjeta (изображение прикреплять). Я получил метаданные, но фильтр не работает.
<?php
/**
* Exit if accessed directly
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
if( ! class_exists( 'WP_List_Table' ) ) {
require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
}
/**
* This is construct of class where all users point listed.
*
* @name Points_Log_List_Table
* @category Class
* @author makewebbetter<webmaster@makewebbetter.com>
* @link https://www.makewebbetter.com/
*/
class Points_Log_List_Table extends WP_List_Table {
public $example_data;
/**
* This construct columns in point table.
*
* @name get_columns.
* @author makewebbetter<webmaster@makewebbetter.com>
* @link https://www.makewebbetter.com/
*/
function get_columns(){
$columns = array(
'cb' => '<input type="checkbox" />',
'user_name' => __('User Name', MWB_WPR_Domain),
// 'user_email' => __('User Email', MWB_WPR_Domain),//user_cardnumber
'user_dni' => __('DNI', MWB_WPR_Domain),
'user_cardnumber' => __('Tarjeta', MWB_WPR_Domain),
'user_points' => __('Total Points', MWB_WPR_Domain),
'sign' => __('Choose +/-',MWB_WPR_Domain),
'obra_social' => __('Obra Social', MWB_WPR_Domain),
'mnt_compra' => __('Monto Compra', MWB_WPR_Domain),
'add_sub_points'=> __('Enter Points', MWB_WPR_Domain),
'reason' => __('Enter Remark', MWB_WPR_Domain),
'details' => __('Action', MWB_WPR_Domain),
);
return $columns;
}
/**
* This show points table list.
*
* @name column_default.
* @author makewebbetter<webmaster@makewebbetter.com>
* @link https://www.makewebbetter.com/
*/
function column_default($item, $column_name){
switch($column_name){
case 'user_name':
$actions = [
'view_point_log' => '<a href="'.MWB_WPR_HOME_URL.'admin.php?page=mwb-wpr-setting&tab=mwb_wpr_points_table&user_id='.$item['id'].'&action=view_point_log">'.__('View Point Log',MWB_WPR_Domain).'</a>',
'view_coupon_detail' =>'<a href="'.MWB_WPR_HOME_URL.'admin.php?page=mwb-wpr-setting&tab=mwb_wpr_points_table&user_id='.$item['id'].'&action=view">'.__('View Coupon Detail',MWB_WPR_Domain).'</a>'
];
return $item[$column_name]. $this->row_actions( $actions );
/* case 'user_email':
return '<b id="email_'.$item['id'].'">'.$item[$column_name].'</b>'; */
case 'user_dni':
return '<b id="user_dni'.$item['id'].'">'.$item[$column_name].'</b>';
case 'user_cardnumber':
return '<b id="user_cardnumber'.$item['id'].'">'.$item[$column_name].'</b>';
case 'user_points':
return '<b id="puntos_'.$item['id'].'">'.$item[$column_name].'</b>';
case 'sign':
$html = '<select id="mwb_sign'.$item['id'].'" style="width:35%;"><option value="+">+</option><option value="-">-</option></select>';
return $html;
////////////////////////////////////////////////////////////////////
case 'obra_social':
//$html = '<input type="checkbox" name="obra_social" style="width:5%; margin-left: 25px" value="'.$item['id'].'" />';
$html = '<input style="width: 50%;" type="text" id="obra_social'.$item['id'].'" min="0" value="">';
return $html;
case 'mnt_compra':
$html = '<input style="width: 50%;" type="text" id="mnt_compra'.$item['id'].'" min="0" value=""> <input type="button" id="'.$item['id'].'" class="button action" value="Aplicar">';
return $html;
////////////////////////////////////////////
case 'add_sub_points':/*
$max_pnt = get_user_meta( $item['id'],'mwb_wpr_points',true);*/
$html = '<input style="width:75%;" type="number" min="0" id="add_sub_points'.$item['id'].'" value="">';
return $html;
case 'reason':
$html = '<input style="width: 100%;" type="text" id="mwb_remark'.$item['id'].'" min="0" value="">';
return $html;
case 'details':
return $this->view_html($item['id']);
default:
return false;
}
}
/**
* This construct update button on points table.
*
* @name view_html.
* @author makewebbetter<webmaster@makewebbetter.com>
* @link https://www.makewebbetter.com/
*/
public function view_html($user_id){
echo '<a href="javascript:void(0)" class="mwb_points_update button button-primary mwb_wpr_save_changes" data-id="'.$user_id.'">'.__("Update", MWB_WPR_Domain).'</a> <input type="button" data-id="'.$user_id.'" class="print" value="Print">';
}
/**
* Perform admin bulk action setting for points table.
*
* @name process_bulk_action.
* @author makewebbetter<webmaster@makewebbetter.com>
* @link https://www.makewebbetter.com/
*/
public function process_bulk_action()
{
if( 'bulk-delete' === $this->current_action() ) {
if( isset( $_POST['mpr_points_ids'] ) && !empty( $_POST['mpr_points_ids'] ))
{
$all_id = $_POST['mpr_points_ids'];
foreach ($all_id as $key => $value) {
delete_user_meta($value,'mwb_wpr_points');
}
}
}
}
/**
* Returns an associative array containing the bulk action
*
* @name process_bulk_action.
* @return array
* @author makewebbetter<webmaster@makewebbetter.com>
* @link https://www.makewebbetter.com/
*/
public function get_bulk_actions() {
$actions = [
'bulk-delete' => __('Delete', MWB_WPR_Domain)
];
return $actions;
}
/**
* Returns an associative array containing the bulk action for sorting.
*
* @name get_sortable_columns.
* @return array
* @author makewebbetter<webmaster@makewebbetter.com>
* @link https://www.makewebbetter.com/
*/
function get_sortable_columns() {
$sortable_columns = array(
'user_name' => array('user_name',false),
'user_email' => array('user_email',false),
'user_points' => array('user_points',false),
);
return $sortable_columns;
}
/**
* Prepare items for sorting.
*
* @name prepare_items.
* @author makewebbetter<webmaster@makewebbetter.com>
* @link https://www.makewebbetter.com/
*/
function prepare_items()
{
$per_page = 10;
$columns = $this->get_columns();
$hidden = array();
$sortable = $this->get_sortable_columns();
$this->_column_headers = array($columns, $hidden, $sortable);
$this->process_bulk_action();
$this->example_data = $this->get_users_points();
$data = $this->example_data;
usort($data, array($this, 'mwb_wpr_usort_reorder'));
$current_page = $this->get_pagenum();
$total_items = count($data);`enter code here`;
$data = array_slice($data,(($current_page-1)*$per_page),$per_page);
$this->items = $data;
$this->set_pagination_args( array(
'total_items' => $total_items,
'per_page' => $per_page,
'total_pages' => ceil($total_items/$per_page)
) );
}
/**
* Return sorted associative array.
*
* @name mwb_wpr_usort_reorder.
* @return array
* @author makewebbetter<webmaster@makewebbetter.com>
* @link https://www.makewebbetter.com/
*/
function mwb_wpr_usort_reorder( $cloumna,$cloumnb `enter code here`)enter code here{
$orderby = (!empty($_REQUEST['orderby'])) ? $_REQUEST['orderby'] : 'id';
$order = (!empty($_REQUEST['order'])) ? $_REQUEST['order'] : 'desc';
if(is_numeric($cloumna[$orderby]) && is_numeric($cloumnb[$orderby])){
if ($cloumna[$orderby] == $cloumnb[$orderby]) {
return 0;
}
elseif($cloumna[$orderby] < $cloumnb[$orderby]){
$result = -1;
return ($order==='asc') ? $result : -$result;
}
elseif($cloumna[$orderby] > $cloumnb[$orderby]){
$result = 1;
return ($order==='asc') ? $result : -$result;
}
}
else{
$result = strcmp($cloumna[$orderby], $cloumnb[$orderby]);
return ($order==='asc') ? $result : -$result;
}
}
function column_cb( $item ) {
return sprintf(
'<input type="checkbox" name="mpr_points_ids[]" value="%s" />', $item['id']
);
}
/**
* This function gives points to user if he doesnot get points.
*
* @name get_users_points.
* @return array
* @author makewebbetter<webmaster@makewebbetter.com>
* @link https://www.makewebbetter.com/
*/
function get_users_points()
{
$args['meta_query'] = array(
'relation' => 'OR',
array(
'key' => 'mwb_wpr_points',
'compare' => 'EXISTS'
),
array(
'key' => 'mwb_wpr_points',
'compare' => 'NOT EXISTS'
)
);
if(isset($_REQUEST['s'])){
$args['search'] = '*' . $_REQUEST['s'] . '*';
}
$args['role__in'] =array('subscriber' , 'customer');
$user_data = new WP_User_Query($args);
$user_data = $user_data->get_results();
$points_data = array();
foreach ($user_data as $key => $value) {
$points_data[] = array(
'id' => $value->data->ID,
'user_name' => $value->data->user_nicename,
'user_email' => $value->data->user_email,
'user_dni' => get_user_meta( $value->data->ID,'user_dni',true),
'user_cardnumber' => get_user_meta( $value->data->ID,'user_cardnumber',true),
'user_points' => get_user_meta( $value->data->ID,'mwb_wpr_points',true)
);
}
//var_dump($points_data);
return $points_data;
}
?>
?>
<form method="post">
<input type="hidden" name="page" value="<?php _e('points_log_list_table',MWB_WPR_Domain); ?>">
<?php
$myListTable = new Points_Log_List_Table();
$myListTable->prepare_items();
$myListTable->search_box(__( 'Search Users',MWB_WPR_Domain ), 'mwb-wpr-user' );//search_box ///mwb-wpr-user el id
$myListTable->display();
?>
</form>
<?php
}
Здесь приведено описание фрагмента изображения, чтобы понять, что я хочу сделать ..
[1]: https://i.stack.imgur.com/3BK4m.png