Функция wp_update_post () возвращает 0 для определенных сообщений - PullRequest
0 голосов
/ 28 февраля 2020

Я использую функцию 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) { } } 

1 Ответ

0 голосов
/ 28 февраля 2020

https://developer.wordpress.org/reference/functions/wp_update_post/:

$ wp_error
(bool) (необязательно) Разрешить возврат WP_Error при ошибке.
Значение по умолчанию: false

Вам нужно передать true в качестве второго параметра wp_update_post, чтобы он возвратил экземпляр WP_Error при ошибке.

Если вы этого не сделаете ... тогда он вместо этого просто вернет 0, если что-то пошло не так.

Итак, добавьте этот параметр и затем var_dump результат этого вызова, чтобы объект WP_Error мог сказать вам, что на самом деле пошло не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...