Heartbeat Control 같은 플러그인이 있지만, 굳이 플러그인까지 쓸 필요 없다. 간단한 몇 줄의 코드로 주기 설정이 가능하다.
우선, heartbeat가 어떻게 동작하는지 간단하게 설명한다. heartbeat는 특정 관리자 페이지 접속시 브라우저와 주기적으로 통신한다. 이 주기는 자바스크립트의 setTimeout() 함수로 구현되며, 기본값은 관리자 페이지에 포커스가 있을 때 15초, 해당 페이지에서 포커스를 잃었을 때 120초로 설정된다. 이 120초는 하드코딩되어 있어 값을 변경하기 어렵지만 포커스가 있을 때 15초는 비교적 손쉽게 변경 가능하다.
우선 heartbeat을 완전히 없애는 방법이다. 그다지 추천하지는 않지만 개발환경에는 그럭저럭 고려해 볼만할 것이다.
add_action( 'admin_init', function () { if ( wp_script_is( 'heartbeat', 'registered' ) ) { wp_deregister_script( 'heartbeat' ); } } );
heartbeat을 변경하되, 주기를 설정하려면 다음처럼 하면 된다.
add_action( 'admin_init', function () { // 5, 10, 15, 30, 60, 120, 'long-polling' $script = "jQuery(document).ready(function () {wp.heartbeat.interval(20)});"; wp_add_inline_script( 'post', $script ); wp_add_inline_script( 'inline-edit-post', $script ); add_action( 'customize_controls_enqueue_scripts', function () use ( $script ) { wp_add_inline_script( 'heartbeat', $script ); } ); }, 100 ); add_filter( 'heartbeat_settings', function ( $settings ) { $settings['interval'] = 20; return $settings; } );
wp.heartbeat.interval(20)
부분과 $settings['interval'] = 20;
부분의 20은 heartbeat의 주기를 20초로 설정하라는 부분이다. 적절히 변경해서 사용하면 될 것이다. 당연히 이게 불편하면 플러그인으로 대체해도 무방하다.