diff -r 48c4eec2b7e6 -r 8c2e4d02f4ef wp/wp-includes/js/heartbeat.js --- a/wp/wp-includes/js/heartbeat.js Fri Sep 05 18:40:08 2025 +0200 +++ b/wp/wp-includes/js/heartbeat.js Fri Sep 05 18:52:52 2025 +0200 @@ -132,16 +132,17 @@ } /* - * The interval can be from 15 to 120 seconds and can be set temporarily to 5 seconds. - * It can be set in the initial options or changed later through JS and/or through PHP. + * Logic check: the interval can be from 1 to 3600 seconds and can be set temporarily + * to 5 seconds. It can be set in the initial options or changed later from JS + * or from PHP through the AJAX responses. */ if ( options.interval ) { settings.mainInterval = options.interval; - if ( settings.mainInterval < 15 ) { - settings.mainInterval = 15; - } else if ( settings.mainInterval > 120 ) { - settings.mainInterval = 120; + if ( settings.mainInterval < 1 ) { + settings.mainInterval = 1; + } else if ( settings.mainInterval > 3600 ) { + settings.mainInterval = 3600; } } @@ -721,10 +722,10 @@ * * @memberOf wp.heartbeat.prototype * - * @param {string|number} speed Interval: 'fast' or 5, 15, 30, 60, 120. + * @param {string|number} speed Interval: 'fast' or integer between 1 and 3600 (seconds). * Fast equals 5. - * @param {string} ticks Tells how many ticks before the interval reverts - * back. Used with speed = 'fast' or 5. + * @param {number} ticks Tells how many ticks before the interval reverts back. + * Value must be between 1 and 30. Used with speed = 'fast' or 5. * * @return {number} Current interval in seconds. */ @@ -733,35 +734,28 @@ oldInterval = settings.tempInterval ? settings.tempInterval : settings.mainInterval; if ( speed ) { - switch ( speed ) { - case 'fast': - case 5: - newInterval = 5000; - break; - case 15: - newInterval = 15000; - break; - case 30: - newInterval = 30000; - break; - case 60: - newInterval = 60000; - break; - case 120: - newInterval = 120000; - break; - case 'long-polling': - // Allow long polling (experimental). - settings.mainInterval = 0; - return 0; - default: + if ( 'fast' === speed ) { + // Special case, see below. + newInterval = 5000; + } else if ( 'long-polling' === speed ) { + // Allow long polling (experimental). + settings.mainInterval = 0; + return 0; + } else { + speed = parseInt( speed, 10 ); + + if ( speed >= 1 && speed <= 3600 ) { + newInterval = speed * 1000; + } else { newInterval = settings.originalInterval; + } } if ( settings.minimalInterval && newInterval < settings.minimalInterval ) { newInterval = settings.minimalInterval; } + // Special case, runs for a number of ticks then reverts to the previous interval. if ( 5000 === newInterval ) { ticks = parseInt( ticks, 10 ) || 30; ticks = ticks < 1 || ticks > 30 ? 30 : ticks;