Я использую функцию wp_update_post()
для обновления определенных сообщений. https://developer.wordpress.org/reference/functions/wp_update_post/
Функция обновляет много сообщений, но иногда происходит сбой. Я сделал var_dump()
, чтобы посмотреть, что он возвращает при сбое, и получил int(0)
.
Я прочитал документацию по функции, и она содержит следующий код:
// First, get all of the original fields.
$post = get_post( $update_post['ID'], ARRAY_A );
if ( is_null( $post ) ) {
if ( $wp_error ) {
return new WP_Error( 'invalid_post', __( 'Invalid post ID.' ) );
}
return 0;
}
Итак, он возвращает 0, если $post
равен нулю. Однако я мог видеть, что переменная $post
заполняется всеми правильными данными, когда я запускаю var_dump()
.
Вот мой код для массива $update_post
.
$update_post = array(
'ID' => $post_id,
'post_title' => $post_title,
'post_content' => $post_content,
'post_excerpt' => $post_excerpt,
'tags_input' => $post_tags,
'post_status' => 'publish'
);
Идентификатор сообщения имеет действительное значение 2084
(есть опубликованное сообщение с этим идентификатором). Все остальные поля также заполняются. Как я могу заставить эту функцию работать?
Я хотел бы еще раз упомянуть, что я все еще могу обновить многие другие сообщения. Проблема возникает только с post-ID 2084 (насколько я знаю).
На основании предположения @CBroe я изменил свою функцию на wp_update_post($update_post, true)
.
Это дало мне следующий вывод:
object(WP_Error)#1639 (2) { ["errors"]=> array(1) { ["db_update_error"]=> array(1) { [0]=> string(37) "Could not update post in the database" } } ["error_data"]=> array(0) { } }