diff --git a/inc/Helpers/Formatting/Text.php b/inc/Helpers/Formatting/Text.php index 97f64681..f65e7f58 100644 --- a/inc/Helpers/Formatting/Text.php +++ b/inc/Helpers/Formatting/Text.php @@ -4,15 +4,17 @@ use function BEA\Theme\Framework\Helpers\Formatting\Escape\escape_content_value; /** - * @usage BEA\Theme\Framework\Helpers\Formatting\Text\the_text( 'text' => 'Lorem ipsum', [ 'before' => '

', 'after' => '

' ] ); + * @usage BEA\Theme\Framework\Helpers\Formatting\Text\the_text( $text, [ 'before' => '

', 'after' => '

' ] ); + * @usage BEA\Theme\Framework\Helpers\Formatting\Text\the_text( $text, [ 'has_textarea' => true, 'before' => '
', 'after' => '
' ] ); * * @param string $value Text to display * @param array $settings { * Optional. Settings for the text markup. * - * @type string $before Optional. Markup to prepend to the text. Default empty. - * @type string $after Optional. Markup to prepend to the text. Default empty. - * @type string $escape Optional. Markup to prepend to the item. Default esc_html. + * @type string $before Optional. Markup to prepend to the text. Default empty. + * @type string $after Optional. Markup to append after the text. Default empty. + * @type string $escape Optional. Escape callback name (e.g. esc_html, wp_kses_post). Default esc_html. + * @type bool $has_textarea Optional. When true, uses wp_kses_post if escape is still the default esc_html, then wpautop(). Default false. * * } * @@ -30,9 +32,10 @@ function the_text( string $value, array $settings = [] ): void { * @param array $settings { * Optional. Settings for the text markup. * - * @type string $before Optional. Markup to prepend to the text. Default empty. - * @type string $after Optional. Markup to prepend to the text. Default empty. - * @type string $escape Optional. Markup to prepend to the item. Default esc_html. + * @type string $before Optional. Markup to prepend to the text. Default empty. + * @type string $after Optional. Markup to append after the text. Default empty. + * @type string $escape Optional. Escape callback name (e.g. esc_html, wp_kses_post). Default esc_html. + * @type bool $has_textarea Optional. When true, uses wp_kses_post if escape is still the default esc_html, then wpautop(). Default false. * * } * @@ -46,14 +49,26 @@ function get_the_text( string $value, array $settings = [] ): string { $settings = wp_parse_args( $settings, [ - 'before' => '', - 'after' => '', - 'escape' => 'esc_html', + 'before' => '', + 'after' => '', + 'escape' => 'esc_html', + 'has_textarea' => false, ] ); $settings = apply_filters( 'bea_theme_framework_text_settings', $settings, $value ); - $value = apply_filters( 'bea_theme_framework_text_value', escape_content_value( $value, $settings['escape'] ), $settings ); + + if ( ! empty( $settings['has_textarea'] ) && 'esc_html' === $settings['escape'] ) { + $settings['escape'] = 'wp_kses_post'; + } + + $value = escape_content_value( $value, $settings['escape'] ); + + if ( ! empty( $settings['has_textarea'] ) ) { + $value = wpautop( $value ); + } + + $value = apply_filters( 'bea_theme_framework_text_value', $value, $settings ); return $settings['before'] . $value . $settings['after']; } diff --git a/src/scss/06-blocks/core/_paragraph.scss b/src/scss/06-blocks/core/_paragraph.scss index 4e60ae4a..33791b49 100644 --- a/src/scss/06-blocks/core/_paragraph.scss +++ b/src/scss/06-blocks/core/_paragraph.scss @@ -15,3 +15,14 @@ p { } } } + +// For paragraphs generated by wpautop function (eg. excerpts), paragraphs are wrapped in a div with the class "is-style-large" for example. We need to apply the text style to the p elements inside the div. +div { + @each $style in $paragraphs { + &.is-style-#{$style} { + & > p:where(:not([class*="is-style-"])) { + @include text(#{$style}); + } + } + } +}