根据文档,我的代码应该有效:
$my_post = array(
'ID' => 12345,
'post_title' => 'This is the new post title.',
'post_name' => 'and-this-the-new-name',
);
wp_update_post( $my_post );
但它并不完全有效;与名称不同,标题确实发生了变化。
我已停用所有插件,以确保没有任何异物可能影响我正在做的事情。
我正在运行最新版本的WordPress。
可能是因为我创建了状态为pending
的帖子吗?
根据其他人的说法,我应该在创建帖子时将状态设置为publish
。
但我无法承担这一责任,因为我需要在发布帖子之前设置post_name
。
我可能做错了什么,我该如何解决?
我交叉检查:
插入状态=发布的帖子 - > post_name自动设置。
然后做了以下事情:
$update_args = array (
'ID' => 12345,
'post_status' => 'pending',
'post_name' => 'try-again-my-own-name',
);
wp_update_post($update_args );
结果:状态设置为待处理,但 post_name现在为空。
答案 0 :(得分:0)
wp_update_post()是wp_insert_post()的包装器。
如果你看一下reference here,就会明白为什么它会清除你的post_name:
// Don't allow contributors to set the post slug for pending review posts.
if ( 'pending' == $post_status && !current_user_can( 'publish_posts' ) ) {
$post_name = '';
}