Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../themes/Divi/core
File: functions.php
/**
[1000] Fix | Delete
* Check if WPML plugin is active.
[1001] Fix | Delete
*
[1002] Fix | Delete
* @since 4.2
[1003] Fix | Delete
*
[1004] Fix | Delete
* @return bool
[1005] Fix | Delete
*/
[1006] Fix | Delete
function et_core_is_wpml_plugin_active() {
[1007] Fix | Delete
return class_exists( 'SitePress' );
[1008] Fix | Delete
}
[1009] Fix | Delete
[1010] Fix | Delete
if ( ! function_exists( 'et_is_product_taxonomy' ) ):
[1011] Fix | Delete
/**
[1012] Fix | Delete
* Wraps {@see is_product_taxonomy()} to check for its existence before calling.
[1013] Fix | Delete
*
[1014] Fix | Delete
* @since 4.0
[1015] Fix | Delete
*
[1016] Fix | Delete
* @return bool
[1017] Fix | Delete
*/
[1018] Fix | Delete
function et_is_product_taxonomy() {
[1019] Fix | Delete
return function_exists( 'is_product_taxonomy' ) && is_product_taxonomy();
[1020] Fix | Delete
}
[1021] Fix | Delete
endif;
[1022] Fix | Delete
[1023] Fix | Delete
[1024] Fix | Delete
if ( ! function_exists( 'et_core_add_allowed_protocols' ) ) :
[1025] Fix | Delete
/**
[1026] Fix | Delete
* Extend the allowlist of allowed URL protocols
[1027] Fix | Delete
*
[1028] Fix | Delete
* @param array $protocols List of URL protocols allowed by WordPress.
[1029] Fix | Delete
*
[1030] Fix | Delete
* @since 3.27.2
[1031] Fix | Delete
*
[1032] Fix | Delete
* @return array Our extended list of URL protocols.
[1033] Fix | Delete
*/
[1034] Fix | Delete
function et_core_add_allowed_protocols( $protocols = array() ) {
[1035] Fix | Delete
$additional = array(
[1036] Fix | Delete
'skype', // Add Skype messaging protocol
[1037] Fix | Delete
'sms', // Add SMS text messaging protocol
[1038] Fix | Delete
);
[1039] Fix | Delete
$protocols = array_unique( array_merge( $protocols, $additional ) );
[1040] Fix | Delete
[1041] Fix | Delete
return $protocols;
[1042] Fix | Delete
}
[1043] Fix | Delete
add_filter( 'kses_allowed_protocols', 'et_core_add_allowed_protocols' );
[1044] Fix | Delete
endif;
[1045] Fix | Delete
[1046] Fix | Delete
[1047] Fix | Delete
if ( ! function_exists( 'et_is_responsive_images_enabled' ) ):
[1048] Fix | Delete
/**
[1049] Fix | Delete
* Get the responsive images setting whether is enabled or not
[1050] Fix | Delete
*
[1051] Fix | Delete
* @since 3.27.1
[1052] Fix | Delete
*
[1053] Fix | Delete
* @return bool
[1054] Fix | Delete
*/
[1055] Fix | Delete
function et_is_responsive_images_enabled() {
[1056] Fix | Delete
global $shortname;
[1057] Fix | Delete
static $enable_responsive_images;
[1058] Fix | Delete
[1059] Fix | Delete
// Fetch the option once
[1060] Fix | Delete
if ( null === $enable_responsive_images ) {
[1061] Fix | Delete
$enable_responsive_images = et_get_option( "{$shortname}_enable_responsive_images", 'on' );
[1062] Fix | Delete
}
[1063] Fix | Delete
[1064] Fix | Delete
return 'on' === $enable_responsive_images;
[1065] Fix | Delete
}
[1066] Fix | Delete
endif;
[1067] Fix | Delete
[1068] Fix | Delete
if ( ! function_exists( 'et_screen_sizes' ) ) :
[1069] Fix | Delete
/**
[1070] Fix | Delete
* Get screen sizes list.
[1071] Fix | Delete
*
[1072] Fix | Delete
* @since 3.27.1
[1073] Fix | Delete
*
[1074] Fix | Delete
* @return array
[1075] Fix | Delete
*/
[1076] Fix | Delete
function et_screen_sizes() {
[1077] Fix | Delete
return array(
[1078] Fix | Delete
'desktop' => 1280,
[1079] Fix | Delete
'tablet' => 980,
[1080] Fix | Delete
'phone' => 480,
[1081] Fix | Delete
);
[1082] Fix | Delete
}
[1083] Fix | Delete
endif;
[1084] Fix | Delete
[1085] Fix | Delete
if ( ! function_exists( 'et_image_get_responsive_size' ) ) :
[1086] Fix | Delete
/**
[1087] Fix | Delete
* Get images responsive sizes.
[1088] Fix | Delete
*
[1089] Fix | Delete
* @since 3.27.1
[1090] Fix | Delete
*
[1091] Fix | Delete
* @param int $orig_width Original image's width.
[1092] Fix | Delete
* @param int $orig_height Original image's height.
[1093] Fix | Delete
* @param string $breakpoint Screen breakpont. See et_screen_sizes().
[1094] Fix | Delete
*
[1095] Fix | Delete
* @return array|boolean Image responsive width & height. False on failure.
[1096] Fix | Delete
*/
[1097] Fix | Delete
function et_image_get_responsive_size( $orig_width, $orig_height, $breakpoint ) {
[1098] Fix | Delete
$et_screen_sizes = et_screen_sizes();
[1099] Fix | Delete
[1100] Fix | Delete
if ( ! isset( $et_screen_sizes[ $breakpoint ] ) ) {
[1101] Fix | Delete
return false;
[1102] Fix | Delete
}
[1103] Fix | Delete
[1104] Fix | Delete
$new_width = $et_screen_sizes[ $breakpoint ];
[1105] Fix | Delete
[1106] Fix | Delete
if ( $new_width >= $orig_width ) {
[1107] Fix | Delete
return false;
[1108] Fix | Delete
}
[1109] Fix | Delete
[1110] Fix | Delete
$ratio = ( $orig_width * 1.0 ) / $orig_height;
[1111] Fix | Delete
[1112] Fix | Delete
$new_height = round( ( $new_width / $ratio ) );
[1113] Fix | Delete
[1114] Fix | Delete
return array(
[1115] Fix | Delete
'width' => $new_width,
[1116] Fix | Delete
'height' => $new_height,
[1117] Fix | Delete
);
[1118] Fix | Delete
}
[1119] Fix | Delete
endif;
[1120] Fix | Delete
[1121] Fix | Delete
if ( ! function_exists( 'et_image_add_srcset_and_sizes' ) ) :
[1122] Fix | Delete
/**
[1123] Fix | Delete
* Add ‘srcset’ and ‘sizes’ attributes to an existing ‘img’ element.
[1124] Fix | Delete
*
[1125] Fix | Delete
* @param string $image Image HTML markup.
[1126] Fix | Delete
* @param boolean $echo Is print the output?
[1127] Fix | Delete
*
[1128] Fix | Delete
* @return string
[1129] Fix | Delete
*/
[1130] Fix | Delete
function et_image_add_srcset_and_sizes( $image, $echo = false ) {
[1131] Fix | Delete
static $srcset_and_sizes_cached = array();
[1132] Fix | Delete
[1133] Fix | Delete
// Check if option is enabled.
[1134] Fix | Delete
if ( ! et_is_responsive_images_enabled() ) {
[1135] Fix | Delete
if ( $echo ) {
[1136] Fix | Delete
echo et_core_intentionally_unescaped( $image, 'html' );
[1137] Fix | Delete
}
[1138] Fix | Delete
[1139] Fix | Delete
return $image;
[1140] Fix | Delete
}
[1141] Fix | Delete
[1142] Fix | Delete
$src = et_get_src_from_img_tag( $image );
[1143] Fix | Delete
[1144] Fix | Delete
$cache_key = $src ? $src : 'empty-src';
[1145] Fix | Delete
[1146] Fix | Delete
if ( isset( $srcset_and_sizes_cached[ $cache_key ] ) ) {
[1147] Fix | Delete
$image = $srcset_and_sizes_cached[ $cache_key ];
[1148] Fix | Delete
} else {
[1149] Fix | Delete
// Only process if src attribute is not empty.
[1150] Fix | Delete
if ( $src ) {
[1151] Fix | Delete
$attachment_id = et_get_attachment_id_by_url( $src );
[1152] Fix | Delete
$image_meta = false;
[1153] Fix | Delete
[1154] Fix | Delete
if ( $attachment_id ) {
[1155] Fix | Delete
$image_meta = wp_get_attachment_metadata( $attachment_id );
[1156] Fix | Delete
}
[1157] Fix | Delete
[1158] Fix | Delete
if ( $image_meta ) {
[1159] Fix | Delete
$image = wp_image_add_srcset_and_sizes( $image, $image_meta, $attachment_id );
[1160] Fix | Delete
}
[1161] Fix | Delete
}
[1162] Fix | Delete
[1163] Fix | Delete
$srcset_and_sizes_cached[ $cache_key ] = $image;
[1164] Fix | Delete
}
[1165] Fix | Delete
[1166] Fix | Delete
if ( $echo ) {
[1167] Fix | Delete
echo et_core_intentionally_unescaped( $image, 'html' );
[1168] Fix | Delete
}
[1169] Fix | Delete
[1170] Fix | Delete
return $image;
[1171] Fix | Delete
}
[1172] Fix | Delete
endif;
[1173] Fix | Delete
[1174] Fix | Delete
if ( ! function_exists( 'et_get_attachment_id_by_url_sql' ) ) :
[1175] Fix | Delete
/**
[1176] Fix | Delete
* Generate SQL query syntax to compute attachment ID by URL.
[1177] Fix | Delete
*
[1178] Fix | Delete
* @since 4.4.2
[1179] Fix | Delete
*
[1180] Fix | Delete
* @param string $url The URL being looked up.
[1181] Fix | Delete
*
[1182] Fix | Delete
* @return string SQL query syntax.
[1183] Fix | Delete
*/
[1184] Fix | Delete
function et_get_attachment_id_by_url_sql( $normalized_url ) {
[1185] Fix | Delete
global $wpdb;
[1186] Fix | Delete
[1187] Fix | Delete
// Strip the HTTP/S protocol.
[1188] Fix | Delete
$cleaned_url = preg_replace( '/^https?:/i', '', $normalized_url );
[1189] Fix | Delete
[1190] Fix | Delete
// Remove any thumbnail size suffix from the filename and use that as a fallback.
[1191] Fix | Delete
$fallback_url = preg_replace( '/-(\d+)x(\d+)\.(jpg|jpeg|gif|png)$/', '.$3', $cleaned_url );
[1192] Fix | Delete
[1193] Fix | Delete
if ( $cleaned_url === $fallback_url ) {
[1194] Fix | Delete
$attachments_query = $wpdb->prepare(
[1195] Fix | Delete
"SELECT id
[1196] Fix | Delete
FROM $wpdb->posts
[1197] Fix | Delete
WHERE `post_type` = %s
[1198] Fix | Delete
AND `guid` IN ( %s, %s )",
[1199] Fix | Delete
'attachment',
[1200] Fix | Delete
esc_url_raw( "https:{$cleaned_url}" ),
[1201] Fix | Delete
esc_url_raw( "http:{$cleaned_url}" )
[1202] Fix | Delete
);
[1203] Fix | Delete
} else {
[1204] Fix | Delete
// Scenario: Trying to find the attachment for a file called x-150x150.jpg.
[1205] Fix | Delete
// 1. Since WordPress adds the -150x150 suffix for thumbnail sizes we cannot be
[1206] Fix | Delete
// sure if this is an attachment or an attachment's generated thumbnail.
[1207] Fix | Delete
// 2. Since both x.jpg and x-150x150.jpg can be uploaded as separate attachments
[1208] Fix | Delete
// we must decide which is a better match.
[1209] Fix | Delete
// 3. The above is why we order by guid length and use the first result.
[1210] Fix | Delete
$attachments_query = $wpdb->prepare(
[1211] Fix | Delete
"SELECT id
[1212] Fix | Delete
FROM $wpdb->posts
[1213] Fix | Delete
WHERE `post_type` = %s
[1214] Fix | Delete
AND `guid` IN ( %s, %s, %s, %s )
[1215] Fix | Delete
ORDER BY CHAR_LENGTH( `guid` ) DESC",
[1216] Fix | Delete
'attachment',
[1217] Fix | Delete
esc_url_raw( "https:{$cleaned_url}" ),
[1218] Fix | Delete
esc_url_raw( "https:{$fallback_url}" ),
[1219] Fix | Delete
esc_url_raw( "http:{$cleaned_url}" ),
[1220] Fix | Delete
esc_url_raw( "http:{$fallback_url}" )
[1221] Fix | Delete
);
[1222] Fix | Delete
}
[1223] Fix | Delete
[1224] Fix | Delete
return $attachments_query;
[1225] Fix | Delete
}
[1226] Fix | Delete
endif;
[1227] Fix | Delete
[1228] Fix | Delete
if ( ! function_exists( 'et_get_attachment_id_by_url' ) ) :
[1229] Fix | Delete
/**
[1230] Fix | Delete
* Tries to get attachment ID by URL.
[1231] Fix | Delete
*
[1232] Fix | Delete
* @since 3.27.1
[1233] Fix | Delete
*
[1234] Fix | Delete
* @param string $url The URL being looked up.
[1235] Fix | Delete
*
[1236] Fix | Delete
* @return int The attachment ID found, or 0 on failure.
[1237] Fix | Delete
*/
[1238] Fix | Delete
function et_get_attachment_id_by_url( $url ) {
[1239] Fix | Delete
global $wpdb;
[1240] Fix | Delete
[1241] Fix | Delete
/**
[1242] Fix | Delete
* Filters the attachment ID.
[1243] Fix | Delete
*
[1244] Fix | Delete
* @since 4.2.1
[1245] Fix | Delete
*
[1246] Fix | Delete
* @param bool $attachment_id_pre Default value. Default is false.
[1247] Fix | Delete
* @param string $url URL of the image need to query.
[1248] Fix | Delete
*
[1249] Fix | Delete
* @return bool|int
[1250] Fix | Delete
*/
[1251] Fix | Delete
$attachment_id_pre = apply_filters( 'et_get_attachment_id_by_url_pre', false, $url );
[1252] Fix | Delete
[1253] Fix | Delete
if ( false !== $attachment_id_pre ) {
[1254] Fix | Delete
return $attachment_id_pre;
[1255] Fix | Delete
}
[1256] Fix | Delete
[1257] Fix | Delete
/**
[1258] Fix | Delete
* Filters the attachment GUID.
[1259] Fix | Delete
*
[1260] Fix | Delete
* This filter intended to get the actual attachment guid URL in case the URL has been filtered before.
[1261] Fix | Delete
* For example the URL has been modified to use CDN URL.
[1262] Fix | Delete
*
[1263] Fix | Delete
* @since 4.2.1
[1264] Fix | Delete
*
[1265] Fix | Delete
* @param string $url URL of the image need to query.
[1266] Fix | Delete
*
[1267] Fix | Delete
* @return string
[1268] Fix | Delete
*/
[1269] Fix | Delete
$url = apply_filters( 'et_get_attachment_id_by_url_guid', $url );
[1270] Fix | Delete
[1271] Fix | Delete
// Normalize image URL.
[1272] Fix | Delete
$normalized_url = et_attachment_normalize_url( $url );
[1273] Fix | Delete
[1274] Fix | Delete
// Bail early if the url is invalid.
[1275] Fix | Delete
if ( ! $normalized_url ) {
[1276] Fix | Delete
return 0;
[1277] Fix | Delete
}
[1278] Fix | Delete
[1279] Fix | Delete
// Load cached data for attachment_id_by_url.
[1280] Fix | Delete
$cache = ET_Core_Cache_File::get( 'attachment_id_by_url' );
[1281] Fix | Delete
[1282] Fix | Delete
if ( isset( $cache[ $normalized_url ] ) ) {
[1283] Fix | Delete
if ( et_core_is_uploads_dir_url( $normalized_url ) ) {
[1284] Fix | Delete
return $cache[ $normalized_url ];
[1285] Fix | Delete
}
[1286] Fix | Delete
[1287] Fix | Delete
unset( $cache[ $normalized_url ] );
[1288] Fix | Delete
ET_Core_Cache_File::set( 'attachment_id_by_url', $cache );
[1289] Fix | Delete
}
[1290] Fix | Delete
[1291] Fix | Delete
$attachments_sql_query = et_get_attachment_id_by_url_sql( $normalized_url );
[1292] Fix | Delete
$attachment_id = (int) $wpdb->get_var( $attachments_sql_query );
[1293] Fix | Delete
[1294] Fix | Delete
// There is this new feature in WordPress 5.3 that allows users to upload big image file
[1295] Fix | Delete
// (threshold being either width or height of 2560px) and the core will scale it down.
[1296] Fix | Delete
// This causing the GUID URL info stored is no more relevant since the WordPress core system
[1297] Fix | Delete
// will append "-scaled." string into the image URL when serving it in the frontend.
[1298] Fix | Delete
// Hence we run another query as fallback in case the attachment ID is not found and
[1299] Fix | Delete
// there is "-scaled." string appear in the image URL
[1300] Fix | Delete
// @see https://make.wordpress.org/core/2019/10/09/introducing-handling-of-big-images-in-wordpress-5-3/
[1301] Fix | Delete
// @see https://wordpress.org/support/topic/media-images-renamed-to-xyz-scaled-jpg/
[1302] Fix | Delete
if ( ! $attachment_id && false !== strpos( $normalized_url, '-scaled.' ) ) {
[1303] Fix | Delete
$normalized_url_not_scaled = str_replace( '-scaled.', '.', $normalized_url );
[1304] Fix | Delete
$attachments_sql_query = et_get_attachment_id_by_url_sql( $normalized_url_not_scaled );
[1305] Fix | Delete
$attachment_id = (int) $wpdb->get_var( $attachments_sql_query );
[1306] Fix | Delete
}
[1307] Fix | Delete
[1308] Fix | Delete
// There is a case the GUID image URL stored differently with the URL
[1309] Fix | Delete
// served in the frontend for a featured image, so the query will always fail.
[1310] Fix | Delete
// Hence we add another fallback query to the _wp_attached_file value in
[1311] Fix | Delete
// the postmeta table to match with the image relative path.
[1312] Fix | Delete
if ( ! $attachment_id ) {
[1313] Fix | Delete
$uploads = wp_get_upload_dir();
[1314] Fix | Delete
$uploads_baseurl = trailingslashit( $uploads['baseurl'] );
[1315] Fix | Delete
[1316] Fix | Delete
if ( 0 === strpos( $normalized_url, $uploads_baseurl ) ) {
[1317] Fix | Delete
$file_path = str_replace( $uploads_baseurl, '', $normalized_url );
[1318] Fix | Delete
$file_path_no_resize = preg_replace( '/-(\d+)x(\d+)\.(jpg|jpeg|gif|png)$/', '.$3', $file_path );
[1319] Fix | Delete
[1320] Fix | Delete
if ( $file_path === $file_path_no_resize ) {
[1321] Fix | Delete
$attachments_sql_query = $wpdb->prepare(
[1322] Fix | Delete
"SELECT post_id
[1323] Fix | Delete
FROM $wpdb->postmeta
[1324] Fix | Delete
WHERE `meta_key` = %s
[1325] Fix | Delete
AND `meta_value` = %s",
[1326] Fix | Delete
'_wp_attached_file',
[1327] Fix | Delete
$file_path
[1328] Fix | Delete
);
[1329] Fix | Delete
} else {
[1330] Fix | Delete
// Scenario: Trying to find the attachment for a file called x-150x150.jpg.
[1331] Fix | Delete
// 1. Since WordPress adds the -150x150 suffix for thumbnail sizes we cannot be
[1332] Fix | Delete
// sure if this is an attachment or an attachment's generated thumbnail.
[1333] Fix | Delete
// 2. Since both x.jpg and x-150x150.jpg can be uploaded as separate attachments
[1334] Fix | Delete
// we must decide which is a better match.
[1335] Fix | Delete
// 3. The above is why we order by meta_value length and use the first result.
[1336] Fix | Delete
$attachments_sql_query = $wpdb->prepare(
[1337] Fix | Delete
"SELECT post_id
[1338] Fix | Delete
FROM $wpdb->postmeta
[1339] Fix | Delete
WHERE `meta_key` = %s
[1340] Fix | Delete
AND `meta_value` IN ( %s, %s )
[1341] Fix | Delete
ORDER BY CHAR_LENGTH( `meta_value` ) DESC",
[1342] Fix | Delete
'_wp_attached_file',
[1343] Fix | Delete
$file_path,
[1344] Fix | Delete
$file_path_no_resize
[1345] Fix | Delete
);
[1346] Fix | Delete
}
[1347] Fix | Delete
[1348] Fix | Delete
$attachment_id = (int) $wpdb->get_var( $attachments_sql_query );
[1349] Fix | Delete
}
[1350] Fix | Delete
}
[1351] Fix | Delete
[1352] Fix | Delete
// Cache data only if attachment ID is found.
[1353] Fix | Delete
if ( $attachment_id && et_core_is_uploads_dir_url( $normalized_url ) ) {
[1354] Fix | Delete
$cache[ $normalized_url ] = $attachment_id;
[1355] Fix | Delete
ET_Core_Cache_File::set( 'attachment_id_by_url', $cache );
[1356] Fix | Delete
}
[1357] Fix | Delete
[1358] Fix | Delete
return $attachment_id;
[1359] Fix | Delete
}
[1360] Fix | Delete
endif;
[1361] Fix | Delete
[1362] Fix | Delete
if ( ! function_exists( 'et_get_attachment_size_by_url' ) ) :
[1363] Fix | Delete
/**
[1364] Fix | Delete
* Tries to get attachment size by URL.
[1365] Fix | Delete
*
[1366] Fix | Delete
* @since 3.27.1
[1367] Fix | Delete
*
[1368] Fix | Delete
* @param string $url The URL being looked up.
[1369] Fix | Delete
* @param string $default_size Default size name on failure.
[1370] Fix | Delete
*
[1371] Fix | Delete
* @return array|string Detected image size width and height or 'full' on failure.
[1372] Fix | Delete
*/
[1373] Fix | Delete
function et_get_attachment_size_by_url( $url, $default_size = 'full' ) {
[1374] Fix | Delete
// Normalize image URL.
[1375] Fix | Delete
$normalized_url = et_attachment_normalize_url( $url );
[1376] Fix | Delete
[1377] Fix | Delete
// Bail early if URL is invalid.
[1378] Fix | Delete
if ( ! $normalized_url ) {
[1379] Fix | Delete
return $default_size;
[1380] Fix | Delete
}
[1381] Fix | Delete
[1382] Fix | Delete
$cache = ET_Core_Cache_File::get( 'attachment_size_by_url' );
[1383] Fix | Delete
[1384] Fix | Delete
if ( isset( $cache[ $normalized_url ] ) ) {
[1385] Fix | Delete
if ( et_core_is_uploads_dir_url( $normalized_url ) ) {
[1386] Fix | Delete
return $cache[ $normalized_url ];
[1387] Fix | Delete
}
[1388] Fix | Delete
[1389] Fix | Delete
unset( $cache[ $normalized_url ] );
[1390] Fix | Delete
ET_Core_Cache_File::set( 'attachment_size_by_url', $cache );
[1391] Fix | Delete
}
[1392] Fix | Delete
[1393] Fix | Delete
$attachment_id = et_get_attachment_id_by_url( $url );
[1394] Fix | Delete
[1395] Fix | Delete
if ( ! $attachment_id ) {
[1396] Fix | Delete
return $default_size;
[1397] Fix | Delete
}
[1398] Fix | Delete
[1399] Fix | Delete
$metadata = wp_get_attachment_metadata( $attachment_id );
[1400] Fix | Delete
[1401] Fix | Delete
if ( ! $metadata ) {
[1402] Fix | Delete
return $default_size;
[1403] Fix | Delete
}
[1404] Fix | Delete
[1405] Fix | Delete
$size = $default_size;
[1406] Fix | Delete
[1407] Fix | Delete
if ( strpos( $url, $metadata['file'] ) === ( strlen( $url ) - strlen( $metadata['file'] ) ) ) {
[1408] Fix | Delete
$size = array( $metadata['width'], $metadata['height'] );
[1409] Fix | Delete
} else if ( preg_match( '/-(\d+)x(\d+)\.(jpg|jpeg|gif|png)$/', $url, $match ) ) {
[1410] Fix | Delete
// Get the image width and height.
[1411] Fix | Delete
// Example: https://regex101.com/r/7JwGz7/1.
[1412] Fix | Delete
$size = array( $match[1], $match[2] );
[1413] Fix | Delete
}
[1414] Fix | Delete
[1415] Fix | Delete
// Cache data only if size is found.
[1416] Fix | Delete
if ( $size !== $default_size && et_core_is_uploads_dir_url( $normalized_url ) ) {
[1417] Fix | Delete
$cache[ $normalized_url ] = $size;
[1418] Fix | Delete
ET_Core_Cache_File::set( 'attachment_size_by_url', $cache );
[1419] Fix | Delete
}
[1420] Fix | Delete
[1421] Fix | Delete
return $size;
[1422] Fix | Delete
}
[1423] Fix | Delete
endif;
[1424] Fix | Delete
[1425] Fix | Delete
if ( ! function_exists( 'et_get_image_srcset_sizes' ) ) :
[1426] Fix | Delete
/**
[1427] Fix | Delete
* Get image srcset & sizes attributes.
[1428] Fix | Delete
*
[1429] Fix | Delete
* @since 3.29.3
[1430] Fix | Delete
*
[1431] Fix | Delete
* @param string $url Image source attribute value.
[1432] Fix | Delete
*
[1433] Fix | Delete
* @return (array|bool) Associative array of srcset & sizes attributes. False on failure.
[1434] Fix | Delete
*/
[1435] Fix | Delete
function et_get_image_srcset_sizes( $url ) {
[1436] Fix | Delete
// Normalize image URL.
[1437] Fix | Delete
$normalized_url = et_attachment_normalize_url( $url );
[1438] Fix | Delete
[1439] Fix | Delete
// Bail early if URL is invalid.
[1440] Fix | Delete
if ( ! $normalized_url ) {
[1441] Fix | Delete
return array();
[1442] Fix | Delete
}
[1443] Fix | Delete
[1444] Fix | Delete
$cache = ET_Core_Cache_File::get( 'image_srcset_sizes' );
[1445] Fix | Delete
[1446] Fix | Delete
if ( isset( $cache[ $normalized_url ] ) ) {
[1447] Fix | Delete
if ( et_core_is_uploads_dir_url( $normalized_url ) ) {
[1448] Fix | Delete
return $cache[ $normalized_url ];
[1449] Fix | Delete
}
[1450] Fix | Delete
[1451] Fix | Delete
unset( $cache[ $normalized_url ] );
[1452] Fix | Delete
ET_Core_Cache_File::set( 'image_srcset_sizes', $cache );
[1453] Fix | Delete
}
[1454] Fix | Delete
[1455] Fix | Delete
$attachment_id = et_get_attachment_id_by_url( $url );
[1456] Fix | Delete
if ( ! $attachment_id ) {
[1457] Fix | Delete
return array();
[1458] Fix | Delete
}
[1459] Fix | Delete
[1460] Fix | Delete
$image_size = et_get_attachment_size_by_url( $url );
[1461] Fix | Delete
if ( ! $image_size ) {
[1462] Fix | Delete
return array();
[1463] Fix | Delete
}
[1464] Fix | Delete
[1465] Fix | Delete
$srcset = wp_get_attachment_image_srcset( $attachment_id, $image_size );
[1466] Fix | Delete
$sizes = wp_get_attachment_image_sizes( $attachment_id, $image_size );
[1467] Fix | Delete
[1468] Fix | Delete
if ( ! $srcset || ! $sizes ) {
[1469] Fix | Delete
return array();
[1470] Fix | Delete
}
[1471] Fix | Delete
[1472] Fix | Delete
$data = array(
[1473] Fix | Delete
'srcset' => $srcset,
[1474] Fix | Delete
'sizes' => $sizes,
[1475] Fix | Delete
);
[1476] Fix | Delete
[1477] Fix | Delete
if ( et_core_is_uploads_dir_url( $normalized_url ) ) {
[1478] Fix | Delete
$cache[ $normalized_url ] = $data;
[1479] Fix | Delete
ET_Core_Cache_File::set( 'image_srcset_sizes', $cache );
[1480] Fix | Delete
}
[1481] Fix | Delete
[1482] Fix | Delete
return $data;
[1483] Fix | Delete
}
[1484] Fix | Delete
endif;
[1485] Fix | Delete
[1486] Fix | Delete
if ( ! function_exists( 'et_attachment_normalize_url' ) ) :
[1487] Fix | Delete
/**
[1488] Fix | Delete
* Tries to normalize attachment URL
[1489] Fix | Delete
*
[1490] Fix | Delete
* @since 3.27.1
[1491] Fix | Delete
*
[1492] Fix | Delete
* @param string $url The URL being looked up.
[1493] Fix | Delete
*
[1494] Fix | Delete
* @return string|bool Normalized image URL or false on failure.
[1495] Fix | Delete
*/
[1496] Fix | Delete
function et_attachment_normalize_url( $url ) {
[1497] Fix | Delete
// Remove URL query and string after
[1498] Fix | Delete
list( $url ) = explode( '?', $url );
[1499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function