get_all_settings(); if ( empty( $s['heartbeat_control'] ) ) { return; } if ( ! empty( $s['heartbeat_disable_front'] ) ) { add_action( 'init', array( $this, 'disable_front' ), 1 ); } if ( ! empty( $s['heartbeat_disable_admin'] ) ) { add_action( 'admin_init', array( $this, 'disable_admin' ), 1 ); } $interval = isset( $s['heartbeat_interval'] ) ? (int) $s['heartbeat_interval'] : 0; if ( $interval >= 15 && $interval <= 300 ) { add_filter( 'heartbeat_settings', array( $this, 'filter_interval' ) ); } } public function disable_front() { if ( is_admin() ) { return; } wp_deregister_script( 'heartbeat' ); } public function disable_admin() { global $pagenow; // Keep on post editor where autosave needs it unless fully disabled. if ( in_array( $pagenow, array( 'post.php', 'post-new.php' ), true ) && empty( \QWSpeedCache\Plugin::instance()->get_all_settings()['heartbeat_disable_editor'] ) ) { return; } wp_deregister_script( 'heartbeat' ); } /** * @param array $settings Heartbeat settings. * @return array */ public function filter_interval( $settings ) { $s = \QWSpeedCache\Plugin::instance()->get_all_settings(); $interval = isset( $s['heartbeat_interval'] ) ? (int) $s['heartbeat_interval'] : 60; $interval = max( 15, min( 300, $interval ) ); $settings['interval'] = $interval; return $settings; } }