过滤器如何在WordPress数据表中工作?

时间:2018-06-27 12:45:35

标签: wordpress

我正在自定义Awesome Support插件以满足我的需求。 all tickets有一个过滤器选项。当我根据ID进行过滤时,它无法正常工作。 enter image description here

我设置了一个实际上不存在的ID。因此它应该显示空表。显示所有先前的数据。但是当我设置一个实际存在的ID时,它可以正常工作: enter image description here

我查看了插件的代码。发现以下行(可能是):

公共函数set_filtering_query_var($ query){

global $post_type;

if ( 'ticket' !== $post_type
    || ! $query->is_main_query()
    || empty ($_GET[ 'id' ])
) {
    return;
}

$fields = $this->get_custom_fields();

foreach( $fields as $key => $value ) {
    if ( 'id' !== $key && $value[ 'args' ][ 'filterable' ] ) {
        $query->query[ $key ] = '';
        $query->set( $key, '');
    }
}

$query->query[ 'post_status' ] = '';
$query->set( 'post_status', '');

$query->query[ 'filter-by-date' ] = '';
$query->set( 'filter-by-date', '');
// echo '<pre>';print_r($query);

}

但是无法弄清楚为什么它对于不存在的ID会发生。  任何想法?请参考任何学习链接。我知道我在胡说八道,但是这个问题让我哭了。感谢您的宝贵时间。

NB:过滤时的网址结构:wp-admin/edit.php?post_status=all&post_type=ticket&id=574603956219986&filter_action=Filter&s&paged=1&action2=-1

1 个答案:

答案 0 :(得分:1)

您可以尝试以下代码

if (!empty ($_GET[ 'id' ])) { $id = esc_attr( $_GET['id'] ); $query->set('post__in', array($id)); }