?'; $all_chars = $lowercase . $uppercase . $numbers . $special_chars; // Default to using all characters if no specific types are provided if (empty($include_character_types)) { $include_character_types = 'all'; } // Build the allowed character set $char_set = ''; if ($include_character_types === 'all') { // Include everything $char_set = $all_chars; } else { // Add specific types requested if (strpos($include_character_types, 'lowercase') !== false) { $char_set .= $lowercase; } if (strpos($include_character_types, 'uppercase') !== false) { $char_set .= $uppercase; } if (strpos($include_character_types, 'numbers') !== false) { $char_set .= $numbers; } if (strpos($include_character_types, 'special') !== false) { $char_set .= $special_chars; } } // Ensure that the string is valid for CSS (starts with a letter and can only include letters, digits, hyphens, or underscores) $css_char_set = $lowercase . $uppercase . $numbers . '-_'; // Random string generation logic $random_string = ''; $first_char = ''; // If CSS compliant, start with a letter (either lowercase or uppercase) if ($css_compliant) { // Ensure the first character is a letter (CSS compliant start) $first_char = $lowercase[rand(0, strlen($lowercase) - 1)]; $random_string .= $first_char; $length--; // Decrease length by 1 as we already added the first char } // Fill the rest of the string with random characters from the valid set (CSS compliant) for ($i = 0; $i < $length; $i++) { // Use only characters that are CSS compliant (letters, digits, hyphens, or underscores) $random_string .= $css_char_set[rand(0, strlen($css_char_set) - 1)]; } // Return the string return $random_string; } } function render_lcp_container( $attributes, $content ) { // Debugging: Check the passed attributes //var_dump($attributes); // Generate a random class name (optional, could be customized) $random_class = lcp_random_string(12,true); // Get the padding and backgroundColor attributes $padding = isset( $attributes['padding'] ) ? $attributes['padding'] : array(); $background_color = isset( $attributes['backgroundColor'] ) ? $attributes['backgroundColor'] : '#ffffff'; // Default color // Debugging: Check padding and background color error_log(print_r($padding, true)); error_log(print_r($background_color, true)); // Check if all padding values are the same across all sizes $same_padding = true; $padding_top = $padding['extraLarge']['top']; $padding_right = $padding['extraLarge']['right']; $padding_bottom = $padding['extraLarge']['bottom']; $padding_left = $padding['extraLarge']['left']; // Compare the padding for all other sizes (large, medium, small) foreach ( ['large', 'medium', 'small'] as $size ) { if ( $padding[$size]['top'] !== $padding_top || $padding[$size]['right'] !== $padding_right || $padding[$size]['bottom'] !== $padding_bottom || $padding[$size]['left'] !== $padding_left ) { $same_padding = false; break; } } // Prepare the inline style or media queries $style = ''; // Add background-color to the inline style $style .= sprintf( 'background-color: %s;', esc_attr( $background_color ) ); if ( $same_padding ) { // If all padding values are the same, use inline style $style .= sprintf( 'padding-top: %s; padding-right: %s; padding-bottom: %s; padding-left: %s;', esc_attr( $padding_top ), esc_attr( $padding_right ), esc_attr( $padding_bottom ), esc_attr( $padding_left ) ); } else { // If padding is different, generate media queries for different sizes $style .= sprintf( '@media (min-width: 1200px) { .%s { padding-top: %s; padding-right: %s; padding-bottom: %s; padding-left: %s; } }', esc_attr( $random_class ), esc_attr( $padding['extraLarge']['top'] ), esc_attr( $padding['extraLarge']['right'] ), esc_attr( $padding['extraLarge']['bottom'] ), esc_attr( $padding['extraLarge']['left'] ) ); $style .= sprintf( '@media (min-width: 1024px) { .%s { padding-top: %s; padding-right: %s; padding-bottom: %s; padding-left: %s; } }', esc_attr( $random_class ), esc_attr( $padding['large']['top'] ), esc_attr( $padding['large']['right'] ), esc_attr( $padding['large']['bottom'] ), esc_attr( $padding['large']['left'] ) ); $style .= sprintf( '@media (min-width: 768px) { .%s { padding-top: %s; padding-right: %s; padding-bottom: %s; padding-left: %s; } }', esc_attr( $random_class ), esc_attr( $padding['medium']['top'] ), esc_attr( $padding['medium']['right'] ), esc_attr( $padding['medium']['bottom'] ), esc_attr( $padding['medium']['left'] ) ); $style .= sprintf( '@media (max-width: 767px) { .%s { padding-top: %s; padding-right: %s; padding-bottom: %s; padding-left: %s; } }', esc_attr( $random_class ), esc_attr( $padding['small']['top'] ), esc_attr( $padding['small']['right'] ), esc_attr( $padding['small']['bottom'] ), esc_attr( $padding['small']['left'] ) ); } // Generate the ', esc_attr( $random_class ), $style ); } // Output the content wrapped in the div with the random class and padding styles return $style_tag . sprintf( '