wordpress - 过滤器如何在 WordPress 数据表中工作?
问题描述
我正在定制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 上。任何想法?请参考任何学习链接。我知道我是在胡说八道,但这个问题让我哭了。谢谢你的时间。
注意:过滤时的 url 结构:wp-admin/edit.php?post_status=all&post_type=ticket&id=574603956219986&filter_action=Filter&s&paged=1&action2=-1
解决方案
您可以尝试以下代码
if (!empty ($_GET[ 'id' ])) {
$id = esc_attr( $_GET['id'] );
$query->set('post__in', array($id));
}
推荐阅读
- sql-server - Len 函数:unicode 字符计为 2
- firebase-test-lab - Firebase 测试实验室错误“放弃会话的意外错误”
- amazon-web-services - 具有 ECS 蓝/绿部署的 AWS CodePipeline 因内部错误而失败
- apollo - apollo 服务器从 apollo 上传客户端接收空对象
- angular - 修改一个查询参数:express JS get请求
- php - 如何修复“require_once() 无法打开流”
- ansible - Ansible - 无法通过 ssh 连接到主机:权限被拒绝(公钥,...密码)
- dart - 多次打开页面错误
- ios - 在 App Messaging 的 Firebase 中添加两个按钮
- javascript - 将圆圈添加到svg时如何最小化回流