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