По какой-то причине я не могу фильтровать сообщение через настраиваемые поля
Например, сообщение вставлено таким образом.
function insert_post($story)
{
$post = [
// "post_content" => $story["extra"]["content"],
// "post_content_filtered" => wp_json_encode($story["extra"]["story_data"]),
"post_status" => "draft",
"meta_input" => [
"glia_story_id" => $story["id"]
]
];
debug($story["id"] . "->" . wp_insert_post($post));
}
если я запрашиваю таким образом, результаты запроса всегда пусто.
// FIXME: not work
$args = [
'meta_value' => $story_id,
'post_type' => 'any',
];
$the_query = new WP_Query($args);
debug($story_id . "posts" . $the_query->have_posts());
С другой стороны, если я использую meta_query, запрос всегда будет возвращать все
// FIXME: not work
$args = [
'meta_query' => [["glia_story_id"=>$story_id]]
];
$the_query = new WP_Query($args);
debug($story_id . "posts" . $the_query->have_posts());
Решение
Проблема связана с WP_Query
по умолчанию игнорирует draft
сообщений. Таким образом, запрос необходимо переопределить, чтобы принимать черновики сообщений
$args = [
'meta_value' => $story_id,
'post_status' => "any"
];
$the_query = new WP_Query($args)