- if ( 2 === wp_verify_nonce( $received['post_nonce'], 'update-post_' . $post_id ) ) {
- $response['wp-refresh-post-nonces'] = array(
- 'replace' => array(
- 'autosavenonce' => wp_create_nonce('autosave'),
- 'getpermalinknonce' => wp_create_nonce('getpermalink'),
- 'samplepermalinknonce' => wp_create_nonce('samplepermalink'),
- 'closedpostboxesnonce' => wp_create_nonce('closedpostboxes'),
- '_ajax_linking_nonce' => wp_create_nonce( 'internal-linking' ),
- '_wpnonce' => wp_create_nonce( 'update-post_' . $post_id ),
- ),
- 'heartbeatNonce' => wp_create_nonce( 'heartbeat-nonce' ),
- );
+ $response['wp-refresh-post-nonces'] = array(
+ 'replace' => array(
+ 'getpermalinknonce' => wp_create_nonce('getpermalink'),
+ 'samplepermalinknonce' => wp_create_nonce('samplepermalink'),
+ 'closedpostboxesnonce' => wp_create_nonce('closedpostboxes'),
+ '_ajax_linking_nonce' => wp_create_nonce( 'internal-linking' ),
+ '_wpnonce' => wp_create_nonce( 'update-post_' . $post_id ),
+ ),
+ 'heartbeatNonce' => wp_create_nonce( 'heartbeat-nonce' ),
+ );
+ }
+
+ return $response;
+}
+
+/**
+ * Disable suspension of Heartbeat on the Add/Edit Post screens.
+ *
+ * @since 3.8.0
+ *
+ * @global string $pagenow
+ *
+ * @param array $settings An array of Heartbeat settings.
+ * @return array Filtered Heartbeat settings.
+ */
+function wp_heartbeat_set_suspension( $settings ) {
+ global $pagenow;
+
+ if ( 'post.php' === $pagenow || 'post-new.php' === $pagenow ) {
+ $settings['suspension'] = 'disable';
+ }
+
+ return $settings;
+}
+
+/**
+ * Autosave with heartbeat
+ *
+ * @since 3.9.0
+ */
+function heartbeat_autosave( $response, $data ) {
+ if ( ! empty( $data['wp_autosave'] ) ) {
+ $saved = wp_autosave( $data['wp_autosave'] );
+
+ if ( is_wp_error( $saved ) ) {
+ $response['wp_autosave'] = array( 'success' => false, 'message' => $saved->get_error_message() );
+ } elseif ( empty( $saved ) ) {
+ $response['wp_autosave'] = array( 'success' => false, 'message' => __( 'Error while saving.' ) );
+ } else {
+ /* translators: draft saved date format, see http://php.net/date */
+ $draft_saved_date_format = __( 'g:i:s a' );
+ /* translators: %s: date and time */
+ $response['wp_autosave'] = array( 'success' => true, 'message' => sprintf( __( 'Draft saved at %s.' ), date_i18n( $draft_saved_date_format ) ) );