wp_ajax_heartbeat() – Ajax handler for the Heartbeat API.

You appear to be a bot. Output may be restricted

Description

Ajax handler for the Heartbeat API.

Runs when the user is logged in.

Usage

wp_ajax_heartbeat();

Parameters

Returns

void

Source

File name: wordpress/wp-admin/includes/ajax-actions.php
Lines:

1 to 79 of 79
function wp_ajax_heartbeat() {
  if ( empty( $_POST['_nonce'] ) ) {
    wp_send_json_error();
  }

  $response    = array();
  $data        = array();
  $nonce_state = wp_verify_nonce( $_POST['_nonce'], 'heartbeat-nonce' );

  // 'screen_id' is the same as $current_screen->id and the JS global 'pagenow'.
  if ( ! empty( $_POST['screen_id'] ) ) {
    $screen_id = sanitize_key( $_POST['screen_id'] );
  } else {
    $screen_id = 'front';
  }

  if ( ! empty( $_POST['data'] ) ) {
    $data = wp_unslash( (array) $_POST['data'] );
  }

  if ( 1 !== $nonce_state ) {
    
/**
 * Filters the nonces to send to the New/Edit Post screen.
 *
 * @since 4.3.0
 *
 * @param array  $response  The Heartbeat response.
 * @param array  $data      The $_POST data sent.
 * @param string $screen_id The screen ID.
 */
    $response = apply_filters( 'wp_refresh_nonces', $response, $data, $screen_id );

    if ( false === $nonce_state ) {
      // User is logged in but nonces have expired.
      $response['nonces_expired'] = true;
      wp_send_json( $response );
    }
  }

  if ( ! empty( $data ) ) {
    
/**
 * Filters the Heartbeat response received.
 *
 * @since 3.6.0
 *
 * @param array  $response  The Heartbeat response.
 * @param array  $data      The $_POST data sent.
 * @param string $screen_id The screen ID.
 */
    $response = apply_filters( 'heartbeat_received', $response, $data, $screen_id );
  }

  
/**
 * Filters the Heartbeat response sent.
 *
 * @since 3.6.0
 *
 * @param array  $response  The Heartbeat response.
 * @param string $screen_id The screen ID.
 */
  $response = apply_filters( 'heartbeat_send', $response, $screen_id );

  
/**
 * Fires when Heartbeat ticks in logged-in environments.
 *
 * Allows the transport to be easily replaced with long-polling.
 *
 * @since 3.6.0
 *
 * @param array  $response  The Heartbeat response.
 * @param string $screen_id The screen ID.
 */
  do_action( 'heartbeat_tick', $response, $screen_id );

  // Send the current time according to the server.
  $response['server_time'] = time();

  wp_send_json( $response );
}
 

 View on GitHub View on Trac