我想通过过滤添加了高级自定义字段的自定义元来查询我的帖子。这是一个布尔元,所以每个帖子都会有类似的内容:
{
...
"acf" : {
"highlight" : true
}
...
}
Run Code Online (Sandbox Code Playgroud)
即使我将 meta_key 和 meta_value 暴露给 REST API,我也无法按此元值进行过滤function.php:
function my_add_meta_vars ($current_vars) {
$current_vars = array_merge ($current_vars, array ('meta_key', 'meta_value'));
return $current_vars;
}
add_filter ('rest_query_vars', 'my_add_meta_vars');
Run Code Online (Sandbox Code Playgroud)
但如果我尝试:
获取 http://localhost/wp-json/wp/v2/posts?filter[meta_key]=highlight&filter[meta_value]=true
我看到所有的帖子就好像过滤器被忽略一样。
我正在使用 MySQL 5.7.12,这是我的查询。
select objectid, (JSON_EXTRACT(fullobject, '$.mail')) as mail from openidm.managedobjects where objecttypes_id=5 and (JSON_EXTRACT(fullobject, '$.mail'))='fake@email.com';
Run Code Online (Sandbox Code Playgroud)
这是输出
--------------------------------------------------
| objectid | mail |
--------------------------------------------------
| 001f73d9-f3d | "fake@email.com" |
--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我想从输出中删除引号,但由于我使用的是 5.7.12,所以无法使用JSON_UNQUOTE().
我尝试过REPLACE():
select objectid, REPLACE((JSON_EXTRACT(fullobject, '$.mail')), '\"', '') as mail from openidm.managedobjects where objecttypes_id=5 and (JSON_EXTRACT(fullobject, '$.mail'))='fake@email.com';
Run Code Online (Sandbox Code Playgroud)
但输出完全不相关:
----------------------------------------------------------------------------
| objectid | mail |
----------------------------------------------------------------------------
| 001f73d9-f3d | 6C75632E6170617369383840676D61696C2E636F6D |
----------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
编辑
这是我的show create table openidm.managedobjects;
CREATE TABLE `managedobjects` (
`id` bigint(20) unsigned NOT …Run Code Online (Sandbox Code Playgroud)