settings = $settings; } /** * Register hooks. * * @return void */ public function register() { add_filter( 'heartbeat_settings', array( $this, 'heartbeat_settings' ) ); add_action( 'init', array( $this, 'maybe_disable_heartbeat' ), 20 ); } /** * Adjust heartbeat frequency. * * @param array $settings Heartbeat settings. * @return array */ public function heartbeat_settings( $settings ) { if ( 'reduce' === $this->settings->get( 'heartbeat.mode', 'reduce' ) ) { $settings['interval'] = max( 15, absint( $this->settings->get( 'heartbeat.frequency', 60 ) ) ); } return $settings; } /** * Disable heartbeat where configured. * * @return void */ public function maybe_disable_heartbeat() { if ( 'disable' !== $this->settings->get( 'heartbeat.mode', 'reduce' ) ) { return; } if ( is_admin() && ! $this->settings->get( 'heartbeat.admin', 1 ) ) { wp_deregister_script( 'heartbeat' ); } if ( ! is_admin() && ! $this->settings->get( 'heartbeat.frontend', 0 ) ) { wp_deregister_script( 'heartbeat' ); } } }