Php 函数wp_update_post()对于某些帖子返回0

Php 函数wp_update_post()对于某些帖子返回0,php,wordpress,Php,Wordpress,我正在使用wp\u update\u post()函数更新某些帖子 该函数会更新很多帖子,但有时会失败。我做了一个var\u 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

我正在使用
wp\u update\u post()
函数更新某些帖子

该函数会更新很多帖子,但有时会失败。我做了一个
var\u 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。但是,当我运行
var\u dump()
时,可以看到变量
$post
填充了所有正确的数据

这是我的
$update\u 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)。所有其他字段也将填充。如何使此函数工作

我想再次提到,我仍然可以更新许多其他帖子。问题只发生在post ID 2084上(据我所知)

根据@CBroe的建议,我将我的函数改为
wp\u update\u post($update\u 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) { } } 
:

$wp\u错误
(bool)(可选)允许在失败时返回WP_错误。
默认值:false

您需要将
true
作为第二个参数传递给
wp\u update\u post
,以便在失败时返回
wp\u Error
的实例

如果不这样做……那么如果出现问题,它将返回
0


因此,添加该参数,然后var_转储该调用的结果,以便
WP_Error
对象可以告诉您实际出了什么问题。

谢谢@CBroe。我已更新问题,以包括我收到的错误。:)这是一个相当普遍的错误。一些快速的研究表明,一个共同的原因可能是字符编码的问题。您应该检查更新此特定文章的数据数组实际包含的内容。