wordpress 创建自定义过滤器

时间:2021-03-09 11:05:27

标签: php sql wordpress woocommerce filter

我在数据库中创建了自定义表并使用本教程:LINK

一切正常,印刷良好,没有过滤器。 我阅读了很多帖子,但无论我做什么,过滤器都不起作用。

表名:vladi_stock_status_daily_update

这是从数据库获取信息的第一部分:

// form sql query due to filter fields
function getWhere() {
    global $wpdb;
    
    $where = ["main.order_item_type='product_name'"];
    
    
    $start_unix = time() - $this->defaultPeriod*86400;
    $start = date('Y-m-d H:i:s', $start_unix);
    $end = date('Y-m-d H:i:s', time());
    if (strlen($_GET['date']) > 0) {
        $date_arr = explode(' - ', $_GET['date']);
        $start = $date_arr[0];
        $end = $date_arr[1];
    }
    
    if (strlen($_GET['product_name'])) {
        $where[] = " (SELECT `product_name` * FROM ".$wpdb->prefix."vladi_stock_status_daily_update)";
    }
    
    if ($start != $end) {
        $where[] = "(SELECT `date` FROM ".$wpdb->prefix.vladi_stock_status_daily_update) >= '$start' AND (SELECT `date` FROM ".$wpdb->prefix."vladi_stock_status_daily_update) <= '$end'";
        
    } else {
        $where[] = "(SELECT `date` FROM ".$wpdb->prefix."vladi_stock_status_daily_update) >= '$start'";
    
    }
    
    return $where;
}

第二部分是构建过滤器:

public function generate_search_box() {
    global $wpdb;
    
    $pickup_locations = [];
    // if ( $options = get_option( 'woocommerce_pickup_locations' ) ) {
         $pickup_locations = array_filter( (array) $options );
    // }

     $query = " SELECT date, product_name FROM `wp_vladi_stock_status_daily_update`";

    $pickup_locations = $wpdb->get_results($query);
    
    if (isset($_GET['date'])) {
        $date_arr = explode(' - ', $_GET['date']);
        $start = $date_arr[0];
        $end = $date_arr[1];
    } else {
        $start_unix = time() - $this->defaultPeriod*86400;
        $start = date('Y-m-d', $start_unix);
        $end = date('Y-m-d', time());
    }
    
    $dateSelected = $start . ' - ' . $end;

    $shownLocations = [];
   

    ?>
    <form class="search-box actions" id="search-form">
        <input type="hidden" name="post_type" value="product">
        <input type="hidden" name="page" value="quantity">
        <input type="hidden" name="tab" value="qrt">
        
        <div class="search-field">
            <label class="screen-reader-text" for="product_name">Name:</label>
            <input type="search" id="product_name" name="product_name" value="<?=$_GET['product_name']?>" placeholder="Product Name" />
        </div>

        <div class="search-field">
            <label class="screen-reader-text" for="date">Date:</label>
            <input type="search" id="date" name="date" value="<?=$dateSelected?>" placeholder="Select Date" />
        </div>
        <div class="search-field">
            <?php submit_button( 'search', '', '', false, array( 'id' => 'search-submit' ) ); ?>
            <input type="button" value="Reset" id="reset" class="button" onClick="resetForm()">
        </div>
        
    </form>


    
    <?php add_thickbox(); ?>
    <?php
    wp_enqueue_script('moment', 'https://cdn.jsdelivr.net/momentjs/latest/moment.min.js');
    wp_enqueue_script('daterangepicker', 'https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js');
    
    wp_add_inline_script('daterangepicker', "
        function resetForm(){
            jQuery('#product_name').val('');
            jQuery('#date').val('');
            jQuery('#date').val(jQuery('#date').attr('data-default'));

            jQuery('#search-form').submit();
        }
        
        jQuery('.remove-btn').click(function(e) {
            var variation = jQuery(this).attr('data-variation');
            
            if (!confirm('Are you sure, that you wnt to remove '+variation+'?')) {
                e.preventDefault();
            }
            
        });
    ", 'after');
    wp_add_inline_script('daterangepicker', "jQuery('#date').daterangepicker(
            {
                startDate : '$start',
                endDate : '$end',
                alwaysShowCalendars : true,
                locale : {
                  format : 'YYYY-MM-DD',
                },
                ranges : {
                  'Today' : [moment(), moment()],
                  'Yesterday' : [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
                  'Last 7 Days' : [moment().subtract(6, 'days'), moment()],
                  'Last 30 Days' : [moment().subtract(29, 'days'), moment()],
                  'This Month' : [moment().startOf('month'), moment().endOf('month')],
                  'Last Month' : [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')],
                }
            }
        );", 'after');
    
    wp_enqueue_style('daterangepicker', 'https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.css');
    
   
}

enter image description here

我得到了这个过滤链接: /wp-admin/edit.php?post_type=product&page=quantity&tab=qrt&product_name=product1&date=2021-02-07+-+2021-03-09 但不过滤任何东西。我做错了什么,比如从表中获取 sql 查询? 任何帮助将不胜感激!

0 个答案:

没有答案
相关问题