我已将自定义帖子类型安排到未来的日期时间。现在我不会说它会自动发布,而是应该将状态切换到草稿。
我们用它来推动网络研讨会,这样我们就可以在存档页面上显示即将举行的网络研讨会。但如果是时候“发布”网络研讨会页面了,我们希望将其设置为草稿。在线研讨会结束后,我们可以编辑草稿并插入录音。这就是为什么我们希望将post\\u状态从future更改为draft,而不是publish。
我们尝试了下面的代码,但没有成功。这个钩子似乎会在post ist存储到数据库之前被触发。但要钩住wp_insert_post
或save_post_{$post->post_type}
不会提供有关旧状态的信息,因此只有状态从“未来”更改为“发布”时,我们的函数才会运行。
有人有主意吗?:-)
add_action( \'future_to_publish\', array( $this, \'transitionFutureToPublish\' ) );
public function transitionFutureToPublish( $post ) {
if ( ! empty( $post ) && $post->post_type == \'webinar\' ) {
$post[\'post_status\'] = \'draft\';
wp_update_post( $post );
}
}
最合适的回答,由SO网友:Howdy_McGee 整理而成
这个$post
您使用的是一个WP\\u Post对象,因此必须与它进行交互。
$post->post_status = \'draft\';
修改
$post
对象,所以这是您可能想要避免的。更好的方法可能是简单地将一个值数组传递给
wp_update_post()
功能如下:
wp_update_post( array(
\'ID\' => $post->ID,
\'post_status\' => \'draft\',
) );