无法使用自定义元数据过滤 WordPress 帖子
not able to filter WordPress posts with custom meta-data
这就是我通过后端 PHP
加载 post 的方式
$projects = new WP_Query([
'post_type' => 'verlage',
'posts_per_page' => -1,
'order_by' => 'date',
'order' => 'desc',
'meta_key' => 'publiziert_in_sprache',
'meta_value' => 'a:1:{i:0;s:7:\"Deutsch\";}'
]);
我要加载的 post 有以下数据(通过 postman 获取):
{
"_cdp_origin": [
"194"
],
"_cdp_origin_site": [
"-1"
],
"_cdp_origin_title": [
"I am a title"
],
"_cdp_counter": [
"65"
],
"_thumbnail_id": [
"24"
],
"_edit_lock": [
"1642265581:1"
],
"_edit_last": [
"1"
],
"publiziert_in_sprache": [
"a:1:{i:0;s:7:\"Deutsch\";}"
],
"_publiziert_in_sprache": [
"field_61be186edcb0b"
]
}
post 没有显示。它设置为 public 这样应该可以工作。如果我删除元过滤器,它也会显示出来。
"publiziert_in_sprache": [
"a:1:{i:0;s:7:\"Deutsch\";}"
],
注意这是如何使用双引号作为字符串定界符的,所以在转义被解决之后,里面的转义双引号是实际的双引号。你得到的实际值是 a:1:{i:0;s:7:"Deutsch";}
'meta_value' => 'a:1:{i:0;s:7:\"Deutsch\";}'
在您的代码中,您使用单引号作为字符串分隔符,因此这些 \"
现在不再是转义双引号;它们只是一个反斜杠字符,后跟一个双引号字符。你在这里得到的实际值是 a:1:{i:0;s:7:\"Deutsch\";}
您的查询正在查找值中的反斜杠,这些反斜杠不包含在数据库中实际存储的内容中。
所以试试
'meta_value' => 'a:1:{i:0;s:7:"Deutsch";}'
相反。
这就是我通过后端 PHP
加载 post 的方式$projects = new WP_Query([
'post_type' => 'verlage',
'posts_per_page' => -1,
'order_by' => 'date',
'order' => 'desc',
'meta_key' => 'publiziert_in_sprache',
'meta_value' => 'a:1:{i:0;s:7:\"Deutsch\";}'
]);
我要加载的 post 有以下数据(通过 postman 获取):
{
"_cdp_origin": [
"194"
],
"_cdp_origin_site": [
"-1"
],
"_cdp_origin_title": [
"I am a title"
],
"_cdp_counter": [
"65"
],
"_thumbnail_id": [
"24"
],
"_edit_lock": [
"1642265581:1"
],
"_edit_last": [
"1"
],
"publiziert_in_sprache": [
"a:1:{i:0;s:7:\"Deutsch\";}"
],
"_publiziert_in_sprache": [
"field_61be186edcb0b"
]
}
post 没有显示。它设置为 public 这样应该可以工作。如果我删除元过滤器,它也会显示出来。
"publiziert_in_sprache": [
"a:1:{i:0;s:7:\"Deutsch\";}"
],
注意这是如何使用双引号作为字符串定界符的,所以在转义被解决之后,里面的转义双引号是实际的双引号。你得到的实际值是 a:1:{i:0;s:7:"Deutsch";}
'meta_value' => 'a:1:{i:0;s:7:\"Deutsch\";}'
在您的代码中,您使用单引号作为字符串分隔符,因此这些 \"
现在不再是转义双引号;它们只是一个反斜杠字符,后跟一个双引号字符。你在这里得到的实际值是 a:1:{i:0;s:7:\"Deutsch\";}
您的查询正在查找值中的反斜杠,这些反斜杠不包含在数据库中实际存储的内容中。
所以试试
'meta_value' => 'a:1:{i:0;s:7:"Deutsch";}'
相反。