修改Search_box以将ni列添加到过滤器

时间:2020-01-20 19:09:49

标签: php wordpress

我正在与Wordpress合作,我购买了一个插件,我对其进行了修改,添加了一些额外的信息,但是我无法通过此标签中的search_box过滤器进行过滤。

我想按DNI和Tarjeta(图像附件)进行过滤。我得到了meta_data,但过滤器无法正常工作。

  <?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

0 个答案:

没有答案