首页 > 解决方案 > 函数 wp_update_post() 为某些帖子返回 0

问题描述

我正在使用该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;
}

因此,如果$post为空,则返回 0。但是,$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'
);    

帖子 ID 的有效值为2084(存在具有此 ID 的已发布帖子)。所有其他字段也被填充。我怎样才能让这个功能工作?

我想再次提一下,我仍然可以更新许多其他帖子。该问题仅发生在 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) { } } 

标签: phpwordpress

解决方案


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

$wp_error
(bool) (可选)允许在失败时返回 WP_Error。
默认值:假

您需要true作为第二个参数传递给wp_update_post,以便它返回WP_Error失败时的实例。

如果您不这样做……那么0如果出现问题,它只会返回。

所以添加那个参数,然后var_dump 那个调用的结果,这样WP_Error对象就可以告诉你到底出了什么问题。


推荐阅读