diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:56:49 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 07:56:49 +0000 |
commit | a415c29efee45520ae252d2aa28f1083a521cd7b (patch) | |
tree | f4ade4b6668ecc0765de7e1424f7c1427ad433ff /wp-includes/blocks/comments-title.php | |
parent | Initial commit. (diff) | |
download | wordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.tar.xz wordpress-a415c29efee45520ae252d2aa28f1083a521cd7b.zip |
Adding upstream version 6.4.3+dfsg1.upstream/6.4.3+dfsg1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'wp-includes/blocks/comments-title.php')
-rw-r--r-- | wp-includes/blocks/comments-title.php | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/wp-includes/blocks/comments-title.php b/wp-includes/blocks/comments-title.php new file mode 100644 index 0000000..62119fc --- /dev/null +++ b/wp-includes/blocks/comments-title.php @@ -0,0 +1,97 @@ +<?php +/** + * Server-side rendering of the `core/comments-title` block. + * + * @package WordPress + */ + +/** + * Renders the `core/comments-title` block on the server. + * + * @param array $attributes Block attributes. + * + * @return string Return the post comments title. + */ +function render_block_core_comments_title( $attributes ) { + + if ( post_password_required() ) { + return; + } + + $align_class_name = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}"; + $show_post_title = ! empty( $attributes['showPostTitle'] ) && $attributes['showPostTitle']; + $show_comments_count = ! empty( $attributes['showCommentsCount'] ) && $attributes['showCommentsCount']; + $wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $align_class_name ) ); + $comments_count = get_comments_number(); + /* translators: %s: Post title. */ + $post_title = sprintf( __( '“%s”' ), get_the_title() ); + $tag_name = 'h2'; + if ( isset( $attributes['level'] ) ) { + $tag_name = 'h' . $attributes['level']; + } + + if ( '0' === $comments_count ) { + return; + } + + if ( $show_comments_count ) { + if ( $show_post_title ) { + if ( '1' === $comments_count ) { + /* translators: %s: Post title. */ + $comments_title = sprintf( __( 'One response to %s' ), $post_title ); + } else { + $comments_title = sprintf( + /* translators: 1: Number of comments, 2: Post title. */ + _n( + '%1$s response to %2$s', + '%1$s responses to %2$s', + $comments_count + ), + number_format_i18n( $comments_count ), + $post_title + ); + } + } elseif ( '1' === $comments_count ) { + $comments_title = __( 'One response' ); + } else { + $comments_title = sprintf( + /* translators: %s: Number of comments. */ + _n( '%s response', '%s responses', $comments_count ), + number_format_i18n( $comments_count ) + ); + } + } elseif ( $show_post_title ) { + if ( '1' === $comments_count ) { + /* translators: %s: Post title. */ + $comments_title = sprintf( __( 'Response to %s' ), $post_title ); + } else { + /* translators: %s: Post title. */ + $comments_title = sprintf( __( 'Responses to %s' ), $post_title ); + } + } elseif ( '1' === $comments_count ) { + $comments_title = __( 'Response' ); + } else { + $comments_title = __( 'Responses' ); + } + + return sprintf( + '<%1$s id="comments" %2$s>%3$s</%1$s>', + $tag_name, + $wrapper_attributes, + $comments_title + ); +} + +/** + * Registers the `core/comments-title` block on the server. + */ +function register_block_core_comments_title() { + register_block_type_from_metadata( + __DIR__ . '/comments-title', + array( + 'render_callback' => 'render_block_core_comments_title', + ) + ); +} + +add_action( 'init', 'register_block_core_comments_title' ); |