wp-includes/class-wp-speculation-rules.php:16Class representing a set of speculation rules.
$rules_by_modearray<string,private$mode => $rules pairs.$mode_allowlistarray<string,private static$eagerness_allowlistarray<string,private static$source_allowlistarray<string,private staticfinal class WP_Speculation_Rules implements JsonSerializable { /** * Stored rules, as a map of `$mode => $rules` pairs. * * Every `$rules` value is a map of `$id => $rule` pairs. * * @since 6.8.0 * @var array<string, array<string, mixed>> */ private $rules_by_mode = array(); /** * The allowed speculation rules modes as a map, used for validation. * * @since 6.8.0 * @var array<string, bool> */ private static $mode_allowlist = array( 'prefetch' => true, 'prerender' => true, ); /** * The allowed speculation rules eagerness levels as a map, used for validation. * * @since 6.8.0 * @var array<string, bool> */ private static $eagerness_allowlist = array( 'immediate' => true, 'eager' => true, 'moderate' => true, 'conservative' => true, ); /** * The allowed speculation rules sources as a map, used for validation. * * @since 6.8.0 * @var array<string, bool> */ private static $source_allowlist = array( 'list' => true, 'document' => true, ); /** * Adds a speculation rule to the speculation rules to consider. * * @since 6.8.0 * * @param string $mode Speculative loading mode. Either 'prefetch' or 'prerender'. * @param string $id Unique string identifier for the speculation rule. * @param array<string, mixed> $rule Associative array of rule arguments. * @return bool True on success, false if invalid parameters are provided. */ public function add_rule( string $mode, string $id, array $rule ): bool { if ( ! self::is_valid_mode( $mode ) ) { _doing_it_wrong( __METHOD__, sprintf( /* translators: %s: invalid mode value */ __( 'The value "%s" is not a valid speculation rules mode.' ), esc_html( $mode ) ), '6.8.0' ); return false; } if ( ! $this->is_valid_id( $id ) ) { _doing_it_wrong( __METHOD__, sprintf( /* translators: %s: invalid ID value */ __( 'The value "%s" is not a valid ID for a speculation rule.' ), esc_html( $id ) ), '6.8.0'Introduced in 6.8.0. Unchanged from 6.8.8 through 7.1.0.
Signature, return type and hooks compared across 4 parsed releases.
src/wp-includes/class-wp-speculation-rules.php, and regenerated for each WordPress release so it tracks the code rather than a snapshot of it.