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});
+ }
+ }
+ }
+}