$above_fold_selectors ) { if ( ! isset( $lazyload_selectors[ $selector ] ) ) { continue; } if ( empty( $above_fold_selectors ) ) { $css_selectors[ $device ][] = 'html ' . strip_tags( $selector ) . ':not(.optml-bg-lazyloaded)'; } else { foreach ( $above_fold_selectors as $above_fold_selector => $bg_urls ) { $css_selectors[ $device ][] = 'html ' . strip_tags( $selector ) . ':not(' . strip_tags( $above_fold_selector ) . '):not(.optml-bg-lazyloaded)'; } } } $preload_urls[ $device ] = []; $css_selectors[ $device ] = array_unique( $css_selectors[ $device ] ); if ( isset( $lcp_data['type'] ) && $lcp_data['type'] === 'bg' ) { if ( ! empty( $lcp_data['bgSelector'] ) ) { $css_selectors[ $device ] = array_map( function ( $selector ) use ( $lcp_data ) { return $selector . ':not(' . strip_tags( $lcp_data['bgSelector'] ) . ')'; }, $css_selectors[ $device ] ); } if ( ! empty( $lcp_data['bgUrls'] ) ) { $preload_urls[ $device ] = array_merge( $preload_urls[ $device ], $lcp_data['bgUrls'] ); } } } if ( OPTML_DEBUG ) { do_action( 'optml_log', 'BGCSS selectors: ' . print_r( $css_selectors, true ) ); do_action( 'optml_log', 'BGPreload URLs: ' . print_r( $preload_urls, true ) ); } foreach ( array_intersect( $preload_urls[ Profile::DEVICE_TYPE_MOBILE ], $preload_urls[ Profile::DEVICE_TYPE_DESKTOP ] ) as $url ) { Links::add_link( [ 'url' => $url, 'priority' => 'high' ] ); } $hide_rule = ' { background-image: none !important; }'; $mobile_selectors = implode( ',', $css_selectors[ Profile::DEVICE_TYPE_MOBILE ] ); $desktop_selectors = implode( ',', $css_selectors[ Profile::DEVICE_TYPE_DESKTOP ] ); if ( $mobile_selectors === $desktop_selectors ) { return empty( $mobile_selectors ) ? '' : $mobile_selectors . $hide_rule; } // if any of those are empty, return the other one if ( empty( $mobile_selectors ) ) { return $desktop_selectors . $hide_rule; } if ( empty( $desktop_selectors ) ) { return $mobile_selectors . $hide_rule; } // generate media query for desktop and mobile $media_query = '@media (max-width: 600px) { ' . $mobile_selectors . $hide_rule . ' } @media (min-width: 600px) { ' . $desktop_selectors . $hide_rule . ' }'; return $media_query; } }