Запрос WordPress с meta_key не работает должным образом - PullRequest
0 голосов
/ 19 июня 2020

По какой-то причине я не могу фильтровать сообщение через настраиваемые поля

Например, сообщение вставлено таким образом.

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)

1 Ответ

1 голос
/ 19 июня 2020

Я думаю, вам просто нужно добавить несколько ключей в свой мета-запрос (ваш второй пример), как показано ниже:

$args = [
    'meta_query' => [
        [
            "key" => "glia_story_id",
            "value" => $story_id
        ]
    ]
];

$the_query = new WP_Query($args);

debug($story_id . "posts" . $the_query->have_posts());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...