如何从管理仪表板通过元查询搜索CPT? 时间:2018-10-11 作者:aberkow 我觉得我错过了一些非常明显的东西,但我已经看了,想不出来了。我有一个CPT(request_form) 我需要对元查询(wp\\u posmeta)而不是帖子标题进行搜索。问题是我需要从管理仪表板执行此操作,而我的代码无法工作。我以前在用户端做过类似的搜索,但在管理端没有。我想pre_get_posts 是正确的钩子,但我什么也做不到。我注意到两件奇怪的事。meta_query 在中出现两次$query 对象一次在$query->query_vars[\'meta_query\'] 一次$query->meta_query.当我启用时SAVEQUERIES 在里面wp-config.php 和转储$wpdb->queries, 我根本没有看到我的查询被执行。function my_search($query) { if (!is_admin()) { return; } if ($query->query[\'post_type\'] !== \'request_form\') { return; } if (!$query->is_search) { return $query; } $search = $query->query_vars[\'s\']; $meta_query = array( \'relation\' => \'OR\', array( \'key\' => \'request_details\', \'value\' => $search, \'compare\' => \'LIKE\' ), array( \'key\' => \'request_subject\', \'value\' => $search, \'compare\' => \'LIKE\' ) ); $query->set(\'meta_query\', $meta_query); echo "<pre>"; var_dump($query); echo "</pre>"; return $query; } add_action(\'pre_get_posts\', \'my_search\'); 如果我使用sequelpro直接在db中查询以下内容,我会得到与预期完全相同的帖子(抱歉,我知道这不完全相同)。SELECT * FROM wp_postmeta WHERE meta_value LIKE "%basketball%" 谢谢你的帮助! 1 个回复 最合适的回答,由SO网友:Linda Paiste 整理而成 您可以安装查询监视器插件,以查看执行搜索时执行的实际查询。我怀疑您遇到的问题是您没有取消设置初始查询变量。您正在添加元查询,但尚未删除s=参数,该参数仅在标题、内容和摘录中搜索关键字。在下面$query->set(\'meta_query\', $meta_query);, 尝试添加以下任一选项:$query->set(\'s\', \'\'); 将“s”设置为空字符串或$query->__unset(\'s\'); 取消设置。 结束 文章导航