我正在自定义Awesome Support
插件以满足我的需求。 all tickets
有一个过滤器选项。当我根据ID进行过滤时,它无法正常工作。
我设置了一个实际上不存在的ID。因此它应该显示空表。显示所有先前的数据。但是当我设置一个实际存在的ID时,它可以正常工作:
我查看了插件的代码。发现以下行(可能是):
公共函数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
答案 0 :(得分:1)
您可以尝试以下代码
if (!empty ($_GET[ 'id' ])) {
$id = esc_attr( $_GET['id'] );
$query->set('post__in', array($id));
}