自定义帖子类型禁止从未来过渡到发布

时间:2019-09-19 作者:mcswizz

我已将自定义帖子类型安排到未来的日期时间。现在我不会说它会自动发布,而是应该将状态切换到草稿。

我们用它来推动网络研讨会,这样我们就可以在存档页面上显示即将举行的网络研讨会。但如果是时候“发布”网络研讨会页面了,我们希望将其设置为草稿。在线研讨会结束后,我们可以编辑草稿并插入录音。这就是为什么我们希望将post\\u状态从future更改为draft,而不是publish。

我们尝试了下面的代码,但没有成功。这个钩子似乎会在post ist存储到数据库之前被触发。但要钩住wp_insert_postsave_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 );
        }
    }

1 个回复
最合适的回答,由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\',
) );

相关推荐

WP_INSERT_POST()使用‘POST_STATUS’=>‘PUBLISH’创建重复项

我正在尝试从中批量添加自定义帖子类型的帖子。csv文件。除了两次添加帖子外,其他一切都正常。它们在数据库中完全相同,只是一个有作者1,另一个有作者2。此外,它在post\\u名称后面附加“-2”。以下是我所拥有的:add_action(\'wp_loaded\', \'add_from_csv\', 10); function add_from_csv() { if (($handle = fopen(dirname(__FILE__) . \"/posts.csv\", \"r\