e94a246d3f459c6797ffa1288325d24-0.43496200 1780891231 $95 d980P:default:get_performance_monitoring-0c6687777d68817019bf76a68de1a8ad-0.99853400 1781300380 $79 ytI2A:default:get_caches-a8c34249ffe87049644101a4ed6ac52f-0.15316100 1782505323 $95 d980P:default:get_performance_monitoring-effc61e5e48e6f1d6c86e3934bd88442-0.29861800 1780067361 $87 ytI2A:default:get_above_the_fold-ee3a924731898780f0e84a5b08b11053-0.77516300 1779791744 $79 ytI2A:default:get_caches-4d299978c0b8751307b481a26e2bf3e2-0.53833800 1780155658 $79 ytI2A:default:get_caches-c43b11f10f3d55472b6cab7b44f9c0dd-0.32308500 1780860601 $60 d980P:post-queries:wp_query-ede186e1a4e68901c4c6aa3f12a03e98 $95 d980P:default:get_performance_monitoring-476f96cb796cabec6f2e2adc484d6de0-0.69842900 1782057439 $100 ytI2A:default:get_preconnect_external_domains-04b4a0bf5e9601cbed76559e77539336-0.97491500 1782632056 $79 d980P:default:get_caches-b3d8f9cdc48634738878728b195079be-0.14741600 1782364965 $95 d980P:default:get_performance_monitoring-33c7aaa54c6bb1efc46136fc17d90746-0.44977500 1780387593 $92 d980P:default:get_lazy_render_content-f5590b0fdc1ae1b86ee772930f3dc680-0.44096000 1782792087 $60 ytI2A:post-queries:wp_query-9bc3e4cfb4b39847d793deebd80dd962 $100 ytI2A:default:get_preconnect_external_domains-fff66510eba80fed0ecdf8fd7157f964-0.53947200 1782370025 $95 ytI2A:default:get_performance_monitoring-62e1bbb9d7fe49ac47bd7477aa231de9-0.69227300 1782462888 $79 ytI2A:default:get_caches-a96d5c9ded4b368f8fe5e63c5095fa15-0.20609400 1781948511 $95 ytI2A:default:get_performance_monitoring-f0752f3149522842f9301b611ecbc067-0.19986400 1782564312 $100 ytI2A:default:get_preconnect_external_domains-c371ac8d75e7d75bbe0560c11c8359c4-0.63671900 1779834480 $92 ytI2A:default:get_lazy_render_content-7505ea97e0dcfa9664f345053da7db4c-0.64024800 1781465938 $79 ytI2A:default:get_caches-66203023a02730198f26a601abbf2d50-0.53847500 1780740150 $79 ytI2A:default:get_caches-f5745b84965705b78e4eca04e4676eb2-0.97491500 1782632056 $100 d980P:default:get_preconnect_external_domains-84b06b515ec24f5361bdcbaf3d186abb-0.50184000 1780347718 $95 ytI2A:default:get_performance_monitoring-5fdb2c6c318128367d68a8908c366aca-0.62599600 1781636256 $100 d980P:default:get_preconnect_external_domains-befdf2f054f29c619bd76820fad0a10c-0.99999400 1780664428 $79 d980P:default:get_caches-64d158cb77db7951039369a57306fb5e-0.70597500 1781402468 $95 d980P:default:get_performance_monitoring-3aceae921a24af55523eb5f4d44210b8-0.48027500 1780079011 $100 ytI2A:default:get_preconnect_external_domains-428327848256241b437d72e52d732195-0.68127600 1781510691 $95 d980P:default:get_performance_monitoring-e2121629167657a25fabba4f893b281a-0.75269500 1782273565 $95 d980P:default:get_performance_monitoring-310fa265c8f92880a639fc92f5513f1b-0.88064200 1782212536 $100 ytI2A:default:get_preconnect_external_domains-d9bae68db9e124cea1c732ee22b305f8-0.26321000 1781031048 $87 ytI2A:default:get_above_the_fold-246d20008af4c6ba3efe8ea4d4ca4644-0.44908500 1781769355 $100 d980P:default:get_preconnect_external_domains-a54774f8be2310dceba73e007a19e37b-0.06824600 1780230213 $95 ytI2A:default:get_performance_monitoring-9e82971185fc33b573dbdbddc7ab9168-0.29044800 1781400666 $87 ytI2A:default:get_above_the_fold-bfb06db93a0568228d63c86394db1e5d-0.36459200 1779908101 $92 ytI2A:default:get_lazy_render_content-8b90c93656da9351a3a9f2b902f99790-0.40111100 1781528055 $79 ytI2A:default:get_caches-2b31b74a90311191319c14db67f4f777-0.40820300 1781350424 $95 ytI2A:default:get_performance_monitoring-8ac38f903cef45977790a7c0908d76e9-0.26230100 1781120058 $95 ytI2A:default:get_performance_monitoring-2370b8fe56cd29f9560597d6058f143b-0.51803700 1782377107 $95 ytI2A:default:get_performance_monitoring-2265239a86055ebbccbae4c051794ef6-0.68793700 1782336726 $95 ytI2A:default:get_performance_monitoring-3acdc76aefb449aecd61f98ef1896efd-0.91674300 1780677995 $79 d980P:default:get_caches-d7601ba941a152bf236849ae48bf1fbe-0.67689700 1782792215 $100 d980P:default:get_preconnect_external_domains-815f15afc14f5801d6384coad; } $is_mobile = isset( $_POST['is_mobile'] ) ? filter_var( wp_unslash( $_POST['is_mobile'] ), FILTER_VALIDATE_BOOLEAN ) : false; $url = isset( $_POST['url'] ) ? untrailingslashit( esc_url_raw( wp_unslash( $_POST['url'] ) ) ) : ''; $row = $this->query->get_row( $url, $is_mobile ); if ( ! empty( $row ) ) { $payload['preload_fonts'] = true; } return $payload; } /** * Filter font urls before saving into DB by checking exclusions list and extensions. * * @param array $fonts Array of fonts to be preloaded. * @param array $exclusions Array of fonts to be excluded. * * @return array Filtered array of fonts, excluding those specified in the exclusion list. */ private function filter_fonts( array $fonts, array $exclusions ): array { if ( empty( $exclusions ) ) { return $fonts; } /** * Create a single regex pattern from all exclusions. * Use a different delimiter (#) to avoid issues with URLs containing slashes. */ $pattern = '#(' . implode( '|', array_map( 'preg_quote', $exclusions ) ) . ')#i'; $extensions = $this->context->get_extensions(); // Filter out fonts that match the pattern. $filtered_fonts = array_filter( $fonts, function ( $font ) use ( $pattern, $exclusions, $extensions ) { if ( ! in_array( pathinfo( $font, PATHINFO_EXTENSION ), $extensions, true ) ) { return false; } // Check exact match ( Mainly url match ). if ( in_array( $font, $exclusions, true ) ) { return false; } // Check for substring match using regex. return ! preg_match( $pattern, $font ); } ); return array_values( $filtered_fonts ); } }