WPTech Nantes 2014
function hbd_register_scripts() {
wp_enqueue_script( 'heartbeat' );
wp_enqueue_script( 'heartbeat-demo',
plugin_dir_url( __FILE__ ) . 'heartbeat-demo.js',
'heartbeat', '1.0', true );
}
add_action( 'wp_enqueue_scripts', 'hbd_register_scripts' );
jQuery(document).ready( function($) {
// Données à envoyer au serveur
var args = {
'data': 'hello world'
}
/* Met en file les données qui seront envoyées au serveur
** au prochain battement
*/
wp.heartbeat.enqueue(
'liveComment', // identifiant
args,
false // écraser ou non les données existantes, false = oui
);
$(document).on( 'heartbeat-tick.liveComment', function( event, data ) {
// Traitement des données retournées par le serveur
});
});
function hbd_live_respond_to_server( $response, $data ) {
if ( isset( $data['liveComment'] ) ) {
if ( !isset( $data['liveComment']['data'] )
return false;
$response['liveComment'] = array(
'returnData' => 'hello you',
);
}
return $response;
}
add_filter( 'heartbeat_received', 'hbd_live_respond_to_server', 10, 2 );
add_filter( 'heartbeat_nopriv_received', 'hbd_live_respond_to_server', 10, 2 );
$(document).on( 'heartbeat-tick.liveComment', function( event, data ) {
// hasOwnProperty permet de vérifier si des données ont été retournées
if ( data.hasOwnProperty( 'liveComment' ) ) {
if ( data['liveComment'].returnData ) {
alert( data['liveComment'].returnData );
}
}
wp.heartbeat.enqueue(
'liveComment',
args,
false
);
});
<?php
wp_localize_script(
'heartbeat-demo', // identifiant du script
'heartbeatDemoAttrs', // nom de la variable qui va contenir les données
array( 'id' => $post->ID ) // Données à passer
);
?>
var args = {
'id' : heartbeatDemoAttrs['id']
}
wp.heartbeat.enqueue(
'liveComment',
args,
false
);
$(document).on('heartbeat-error.liveComment',
function( e, jqXHR, textStatus, error ) {
console.log( textStatus );
console.log( error );
}
);
function hbd_heartbeat_settings( $settings ) {
$settings['interval'] = 15; // Minimum 15, Maximum 120
return $settings;
}
add_filter( 'heartbeat_settings', 'hbd_heartbeat_settings' );
De base toutes les 60 secondes
// Toutes les 5 secondes pendant 2 min 30 sec maximum
wp.heartbeat.interval( 'fast' );
wp.heartbeat.interval( int ); // valeurs possibles : 5, 15, 30, 60, 120
function hbd_live_respond_to_server( $response, $data ) {
if ( isset( $data['liveComment'] ) ) {
if ( !isset( $data['liveComment']['data'] )
return false;
$response['liveComment'] = array(
'returnData' => 'hello you',
);
$response['heartbeat_interval'] = 'fast';
}
return $response;
}
add_filter( 'heartbeat_received', 'hbd_live_respond_to_server', 10, 2 );
add_filter( 'heartbeat_nopriv_received', 'hbd_live_respond_to_server', 10, 2 );
// Vérifier si des données sont en attente
wp.heartbeat.isQueued( 'liveComment' );
// Enlever des données en attente
wp.heartbeat.dequeue( 'liveComment' );
// Récupérer les données en attente
wp.heartbeat.getQueuedItem( 'liveComment' );
Développeur/intégrateur WP
Me retrouver sur :