Мы можем добавить сообщение с функцией wp_insert_post($postarr);
.
Здесь, если мы добавим несколько данных в переменную "$postarr
" в дополнение к информации, которая нужна WordPress (как показано ниже) .
$postarr = array(
'post_title' => 'Hello World',
'post_content' => '...',
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'post',
'dummy_field' => 'Dummy Text!'
);
wp_insert_post($postarr);
Если вы используете хук непосредственно перед созданием контента, add_action('wp_insert_post_data', 'my_function' 10, 2);
возвращает нужные вам данные.
add_action('wp_insert_post_data', 'my_function', 10, 2);
funcion my_function($data, $postarr)
{
die($postarr->dummy_field); // 'Dummy Text!'
}
Но после добавления поста мы используем хук add_action('wp_insert_post', 'my_function', 10, 3);
не содержит «фиктивных» данных, которые нам нужны.
add_action('wp_insert_post', 'my_function', 10, 3);
funcion my_function($post_ID, $post, $update)
{
add_post_meta($post_ID, 'dummy_field', $post->dummy_field, true);
die($post->dummy_field); // "undefined"
}
Фактически, мы можем решить это следующим образом:
$postarr = array(
'post_title' => 'Hello World',
'post_content' => '...',
'post_status' => 'publish',
'post_author' => 1,
'post_type' => 'post',
'dummy_field' => 'Dummy Text!'
);
$id = wp_insert_post($postarr);
is_int($id) ? add_post_meta($id, 'dummy_field', $postarr->dummy_field, true) : "";
Однако, как видно из Например, это локальное решение, и следующая ситуация не будет работать, например, при добавлении контента через REST API или из панели ADMIN.
Моя цель состоит в том, чтобы при запросе POST через REST API и При добавлении нового сообщения некоторые личные данные, которые мы отправляем внутри данных, становятся доступными для загрузки с использованием идентификатора того же контента, встроенного в механизм WordPress.
Надеюсь, это имеет абсолютное решение.