一般来说如果你有定时发布文章的需求,那么可能就会存在定时发布失败或者在定时发布的时候站点发生问题,那么等站点恢复之后,你可能就需要手动去发布了,为了解决这类问题,可以使用下面的代码来解决,不过该段代码可能会存在一定的影响,毕竟是勾在了init上面,意味着每此页面可能就会进行一次。
function wpms_init() { remove_action( 'publish_future_post', 'check_and_publish_future_post' ); global $wpdb; $scheduledIDs = $wpdb->get_col( "SELECT`ID`FROM`{$wpdb->posts}`" . 'WHERE(' . '((`post_date`>0)&&(`post_date`<=CURRENT_TIMESTAMP()))OR' . '((`post_date`>0)&&(`post_date`<=UTC_TIMESTAMP()))' . ")AND`post_status`='future'LIMIT 0,5" ); if ( ! count( $scheduledIDs ) ) { return; } foreach ( $scheduledIDs as $scheduledID ) { if ( ! $scheduledID ) { continue; } wp_publish_post( $scheduledID ); } } add_action( 'init', 'wpms_init', 10 );