wp_ajax_heartbeat()

In this article

Handles the Heartbeat API via AJAX.

Description

Runs when the user is logged in.

Source

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 ); } 

Hooks

apply_filters( ‘heartbeat_received’, array $response, array $data, string $screen_id )

Filters the Heartbeat response received.

apply_filters( ‘heartbeat_send’, array $response, string $screen_id )

Filters the Heartbeat response sent.

do_action( ‘heartbeat_tick’, array $response, string $screen_id )

Fires when Heartbeat ticks in logged-in environments.

apply_filters( ‘wp_refresh_nonces’, array $response, array $data, string $screen_id )

Filters the nonces to send to the New/Edit Post screen.

Changelog

VersionDescription
3.6.0Introduced.

User Contributed Notes

You must log in before being able to contribute a note or feedback.