如何安排和发布一篇准备好的帖子?

时间:2016-11-19 作者:Johansson

我有一个网站,帖子的内容是在帖子发布后动态生成的。

我正在使用此代码生成我想要的内容:

add_action( \'publish_post\', \'generate_content\'); function generate_content($post){ //some code here }

这个过程有时可能需要5分钟,而帖子会立即发布(我已经将php超时设置为600秒)。

我想在函数完成任务后安排帖子,或者将帖子保存为草稿,并在准备好后自动发布。

有没有办法做到这一点?非常感谢您的帮助。

3 个回复
最合适的回答,由SO网友:Ashok Kumar Nath 整理而成

可能有两种方法:

add_action( \'draft_post\', \'wpse_246730_my_function\' );
function wpse_246730_my_function( $post_id, $post )
{
    // Do your things

    // Just to stay safe
    remove_action( \'draft_post\', \'wpse_246730_my_function\' );
    wp_publish_post( $post_id );
    add_action( \'draft_post\', \'wpse_246730_my_function\' );
}
或者将帖子设置为未来状态,并设置10或20分钟后发布的时间。然后使用以下代码:

add_action( \'future_post\', \'wpse_246730_my_function\' );
function wpse_246730_my_function( $post_id, $post )
{
    // Do your things
}

SO网友:jgraup

使用wp_publish_post( $post_id) 更改帖子的状态。再想想另一个钩子\'save_post\' 而不是\'publish_post\' 启动流程。

SO网友:Sam Miller

这将允许您在创建帖子后立即运行代码,并且应该立即运行。因此,如果帖子的新状态为“发布”,并且之前的任何其他状态为“草稿”或“无状态”,则将运行此操作。

function some_function( $new, $old, $post ) {
    if ( ( $new == \'publish\' ) && ( $old != \'publish\' ) && ( $post->post_type == \'post\' ) ) {
        //Run code here

    } else {
        return;
    }
}
add_action( \'transition_post_status\', \'some_function\', 10, 3 );