Priority File Manager

šŸ“ public_html
Base Directory:
/home/toolrmtm/crazyespresso.com/wp-includes/blocks
NameTypeSizeActions
šŸ“ .. Folder -
šŸ“ accordion Folder -
šŸ“ accordion-heading Folder -
šŸ“ accordion-item Folder -
šŸ“„ accordion-item.php File 2411
Edit Download
šŸ“ accordion-panel Folder -
šŸ“„ accordion.php File 1147
Edit Download
šŸ“ archives Folder -
šŸ“„ archives.php File 4415
Edit Download
šŸ“ audio Folder -
šŸ“ avatar Folder -
šŸ“„ avatar.php File 5745
Edit Download
šŸ“ block Folder -
šŸ“„ block.php File 4186
Edit Download
šŸ“„ blocks-json.php File 218576
Edit Download
šŸ“ button Folder -
šŸ“„ button.php File 1752
Edit Download
šŸ“ buttons Folder -
šŸ“ calendar Folder -
šŸ“„ calendar.php File 6075
Edit Download
šŸ“ categories Folder -
šŸ“„ categories.php File 4650
Edit Download
šŸ“ code Folder -
šŸ“ column Folder -
šŸ“ columns Folder -
šŸ“ comment-author-name Folder -
šŸ“„ comment-author-name.php File 2133
Edit Download
šŸ“ comment-content Folder -
šŸ“„ comment-content.php File 2459
Edit Download
šŸ“ comment-date Folder -
šŸ“„ comment-date.php File 1863
Edit Download
šŸ“ comment-edit-link Folder -
šŸ“„ comment-edit-link.php File 1713
Edit Download
šŸ“ comment-reply-link Folder -
šŸ“„ comment-reply-link.php File 2075
Edit Download
šŸ“ comment-template Folder -
šŸ“„ comment-template.php File 4494
Edit Download
šŸ“ comments Folder -
šŸ“ comments-pagination Folder -
šŸ“ comments-pagination-next Folder -
šŸ“„ comments-pagination-next.php File 1924
Edit Download
šŸ“ comments-pagination-numbers Folder -
šŸ“„ comments-pagination-numbers.php File 1632
Edit Download
šŸ“ comments-pagination-previous Folder -
šŸ“„ comments-pagination-previous.php File 1790
Edit Download
šŸ“„ comments-pagination.php File 1261
Edit Download
šŸ“ comments-title Folder -
šŸ“„ comments-title.php File 2772
Edit Download
šŸ“„ comments.php File 6784
Edit Download
šŸ“ cover Folder -
šŸ“„ cover.php File 3175
Edit Download
šŸ“ details Folder -
šŸ“ embed Folder -
šŸ“ file Folder -
šŸ“„ file.php File 1879
Edit Download
šŸ“ footnotes Folder -
šŸ“„ footnotes.php File 3771
Edit Download
šŸ“ freeform Folder -
šŸ“ gallery Folder -
šŸ“„ gallery.php File 6439
Edit Download
šŸ“ group Folder -
šŸ“ heading Folder -
šŸ“„ heading.php File 1301
Edit Download
šŸ“ home-link Folder -
šŸ“„ home-link.php File 5438
Edit Download
šŸ“ html Folder -
šŸ“ image Folder -
šŸ“„ image.php File 13824
Edit Download
šŸ“„ index.php File 5111
Edit Download
šŸ“ latest-comments Folder -
šŸ“„ latest-comments.php File 5030
Edit Download
šŸ“ latest-posts Folder -
šŸ“„ latest-posts.php File 8734
Edit Download
šŸ“ legacy-widget Folder -
šŸ“„ legacy-widget.php File 4011
Edit Download
šŸ“ list Folder -
šŸ“ list-item Folder -
šŸ“„ list.php File 1273
Edit Download
šŸ“ loginout Folder -
šŸ“„ loginout.php File 1664
Edit Download
šŸ“ math Folder -
šŸ“ media-text Folder -
šŸ“„ media-text.php File 4383
Edit Download
šŸ“ missing Folder -
šŸ“ more Folder -
šŸ“ navigation Folder -
šŸ“ navigation-link Folder -
šŸ“„ navigation-link.php File 13961
Edit Download
šŸ“ navigation-submenu Folder -
šŸ“„ navigation-submenu.php File 9976
Edit Download
šŸ“„ navigation.php File 49550
Edit Download
šŸ“ nextpage Folder -
šŸ“ page-list Folder -
šŸ“ page-list-item Folder -
šŸ“„ page-list-item.php File 361
Edit Download
šŸ“„ page-list.php File 13611
Edit Download
šŸ“ paragraph Folder -
šŸ“ pattern Folder -
šŸ“„ pattern.php File 1788
Edit Download
šŸ“ post-author Folder -
šŸ“ post-author-biography Folder -
šŸ“„ post-author-biography.php File 1524
Edit Download
šŸ“ post-author-name Folder -
šŸ“„ post-author-name.php File 1951
Edit Download
šŸ“„ post-author.php File 2734
Edit Download
šŸ“ post-comments-count Folder -
šŸ“„ post-comments-count.php File 1275
Edit Download
šŸ“ post-comments-form Folder -
šŸ“„ post-comments-form.php File 2805
Edit Download
šŸ“ post-comments-link Folder -
šŸ“„ post-comments-link.php File 2237
Edit Download
šŸ“ post-content Folder -
šŸ“„ post-content.php File 2347
Edit Download
šŸ“ post-date Folder -
šŸ“„ post-date.php File 3632
Edit Download
šŸ“ post-excerpt Folder -
šŸ“„ post-excerpt.php File 3612
Edit Download
šŸ“ post-featured-image Folder -
šŸ“„ post-featured-image.php File 9363
Edit Download
šŸ“ post-navigation-link Folder -
šŸ“„ post-navigation-link.php File 4837
Edit Download
šŸ“ post-template Folder -
šŸ“„ post-template.php File 5749
Edit Download
šŸ“ post-terms Folder -
šŸ“„ post-terms.php File 3640
Edit Download
šŸ“ post-time-to-read Folder -
šŸ“„ post-time-to-read.php File 6493
Edit Download
šŸ“ post-title Folder -
šŸ“„ post-title.php File 2138
Edit Download
šŸ“ preformatted Folder -
šŸ“ pullquote Folder -
šŸ“ query Folder -
šŸ“ query-no-results Folder -
šŸ“„ query-no-results.php File 1847
Edit Download
šŸ“ query-pagination Folder -
šŸ“ query-pagination-next Folder -
šŸ“„ query-pagination-next.php File 3781
Edit Download
šŸ“ query-pagination-numbers Folder -
šŸ“„ query-pagination-numbers.php File 4770
Edit Download
šŸ“ query-pagination-previous Folder -
šŸ“„ query-pagination-previous.php File 3578
Edit Download
šŸ“„ query-pagination.php File 1176
Edit Download
šŸ“ query-title Folder -
šŸ“„ query-title.php File 2943
Edit Download
šŸ“ query-total Folder -
šŸ“„ query-total.php File 2535
Edit Download
šŸ“„ query.php File 5690
Edit Download
šŸ“ quote Folder -
šŸ“ read-more Folder -
šŸ“„ read-more.php File 1830
Edit Download
šŸ“„ require-dynamic-blocks.php File 4700
Edit Download
šŸ“„ require-static-blocks.php File 558
Edit Download
šŸ“ rss Folder -
šŸ“„ rss.php File 4609
Edit Download
šŸ“ search Folder -
šŸ“„ search.php File 23817
Edit Download
šŸ“ separator Folder -
šŸ“ shortcode Folder -
šŸ“„ shortcode.php File 735
Edit Download
šŸ“ site-logo Folder -
šŸ“„ site-logo.php File 6334
Edit Download
šŸ“ site-tagline Folder -
šŸ“„ site-tagline.php File 1203
Edit Download
šŸ“ site-title Folder -
šŸ“„ site-title.php File 1864
Edit Download
šŸ“ social-link Folder -
šŸ“„ social-link.php File 67735
Edit Download
šŸ“ social-links Folder -
šŸ“ spacer Folder -
šŸ“ table Folder -
šŸ“ tag-cloud Folder -
šŸ“„ tag-cloud.php File 1590
Edit Download
šŸ“ template-part Folder -
šŸ“„ template-part.php File 10154
Edit Download
šŸ“ term-count Folder -
šŸ“„ term-count.php File 1843
Edit Download
šŸ“ term-description Folder -
šŸ“„ term-description.php File 1770
Edit Download
šŸ“ term-name Folder -
šŸ“„ term-name.php File 2069
Edit Download
šŸ“ term-template Folder -
šŸ“„ term-template.php File 4468
Edit Download
šŸ“ terms-query Folder -
šŸ“ text-columns Folder -
šŸ“ verse Folder -
šŸ“ video Folder -
šŸ“„ video.php File 2733
Edit Download
šŸ“ widget-group Folder -
šŸ“„ widget-group.php File 2438
Edit Download

View File: post-time-to-read.php

<?php
/**
 * Server-side rendering of the `core/post-time-to-read` block.
 *
 * @package WordPress
 */

/**
 * Counts words or characters in a provided text string.
 *
 * This function currently employs an array of regular expressions
 * to parse HTML and count words, which may result in inaccurate
 * word counts. However, it is designed primarily to agree with the
 * corresponding JavaScript function.
 *
 * Any improvements in the word counting, for example with the HTML API
 * and {@see \IntlBreakIterator::createWordInstance()} should coordinate
 * with changes to the JavaScript implementation to ensure consistency
 * between the editor and the rendered page.
 *
 * @since 6.9.0
 *
 * @param string $text Text to count elements in.
 * @param string $type The type of count. Accepts 'words', 'characters_excluding_spaces', or 'characters_including_spaces'.
 *
 * @return string The rendered word count.
 */
function block_core_post_time_to_read_word_count( $text, $type ) {
	$settings = array(
		'html_regexp'                        => '/<\/?[a-z][^>]*?>/i',
		'html_comment_regexp'                => '/<!--[\s\S]*?-->/',
		'space_regexp'                       => '/&nbsp;|&#160;/i',
		'html_entity_regexp'                 => '/&\S+?;/',
		'connector_regexp'                   => "/--|\x{2014}/u",
		'remove_regexp'                      => "/[\x{0021}-\x{0040}\x{005B}-\x{0060}\x{007B}-\x{007E}\x{0080}-\x{00BF}\x{00D7}\x{00F7}\x{2000}-\x{2BFF}\x{2E00}-\x{2E7F}]/u",
		'astral_regexp'                      => "/[\x{010000}-\x{10FFFF}]/u",
		'words_regexp'                       => '/\S\s+/u',
		'characters_excluding_spaces_regexp' => '/\S/u',
		'characters_including_spaces_regexp' => "/[^\f\n\r\t\v\x{00AD}\x{2028}\x{2029}]/u",
	);

	$count = 0;

	if ( '' === trim( $text ) ) {
		return $count;
	}

	// Sanitize type to one of three possibilities: 'words', 'characters_excluding_spaces' or 'characters_including_spaces'.
	if ( 'characters_excluding_spaces' !== $type && 'characters_including_spaces' !== $type ) {
		$type = 'words';
	}

	$text .= "\n";

	// Replace all HTML with a new-line.
	$text = preg_replace( $settings['html_regexp'], "\n", $text );

	// Remove all HTML comments.
	$text = preg_replace( $settings['html_comment_regexp'], '', $text );

	// If a shortcode regular expression has been provided use it to remove shortcodes.
	if ( ! empty( $settings['shortcodes_regexp'] ) ) {
		$text = preg_replace( $settings['shortcodes_regexp'], "\n", $text );
	}

	// Normalize non-breaking space to a normal space.
	$text = preg_replace( $settings['space_regexp'], ' ', $text );

	if ( 'words' === $type ) {
		// Remove HTML Entities.
		$text = preg_replace( $settings['html_entity_regexp'], '', $text );

		// Convert connectors to spaces to count attached text as words.
		$text = preg_replace( $settings['connector_regexp'], ' ', $text );

		// Remove unwanted characters.
		$text = preg_replace( $settings['remove_regexp'], '', $text );
	} else {
		// Convert HTML Entities to "a".
		$text = preg_replace( $settings['html_entity_regexp'], 'a', $text );

		// Remove surrogate points.
		$text = preg_replace( $settings['astral_regexp'], 'a', $text );
	}

	// Match with the selected type regular expression to count the items.
	return (int) preg_match_all( $settings[ $type . '_regexp' ], $text );
}

/**
 * Renders the `core/post-time-to-read` block on the server.
 *
 * @since 6.9.0
 *
 * @param  array    $attributes Block attributes.
 * @param  string   $content    Block default content.
 * @param  WP_Block $block      Block instance.
 * @return string Returns the rendered post author name block.
 */
function render_block_core_post_time_to_read( $attributes, $content, $block ) {
	if ( ! isset( $block->context['postId'] ) ) {
		return '';
	}

	$content              = get_the_content();
	$average_reading_rate = isset( $attributes['averageReadingSpeed'] ) ? $attributes['averageReadingSpeed'] : 189;

	$display_mode = isset( $attributes['displayMode'] ) ? $attributes['displayMode'] : 'time';

	$word_count_type = wp_get_word_count_type();
	$total_words     = block_core_post_time_to_read_word_count( $content, $word_count_type );

	$parts = array();

	// Add "time to read" part, if enabled.
	if ( 'time' === $display_mode ) {
		if ( ! empty( $attributes['displayAsRange'] ) ) {
			// Calculate faster reading rate with 20% speed = lower minutes,
			// and slower reading rate with 20% speed = higher minutes.
			$min_minutes = max( 1, (int) round( $total_words / $average_reading_rate * 0.8 ) );
			$max_minutes = max( 1, (int) round( $total_words / $average_reading_rate * 1.2 ) );
			if ( $min_minutes === $max_minutes ) {
				$max_minutes = $min_minutes + 1;
			}
			/* translators: 1: minimum minutes, 2: maximum minutes to read the post. */
			$time_string = sprintf(
				/* translators: 1: minimum minutes, 2: maximum minutes to read the post. */
				_x( '%1$s–%2$s minutes', 'Range of minutes to read' ),
				$min_minutes,
				$max_minutes
			);
		} else {
			$minutes_to_read = max( 1, (int) round( $total_words / $average_reading_rate ) );
			$time_string     = sprintf(
				/* translators: %s: the number of minutes to read the post. */
				_n( '%s minute', '%s minutes', $minutes_to_read ),
				$minutes_to_read
			);
		}
		$parts[] = $time_string;
	}

	// Add "word count" part, if enabled.
	if ( 'words' === $display_mode ) {
		$word_count_string = 'words' === $word_count_type ? sprintf(
			/* translators: %s: the number of words in the post. */
			_n( '%s word', '%s words', $total_words ),
			number_format_i18n( $total_words )
		) : sprintf(
			/* translators: %s: the number of characters in the post. */
			_n( '%s character', '%s characters', $total_words ),
			number_format_i18n( $total_words )
		);
		$parts[] = $word_count_string;
	}

	$display_string = implode( '<br>', $parts );

	$align_class_name = empty( $attributes['textAlign'] ) ? '' : "has-text-align-{$attributes['textAlign']}";

	$wrapper_attributes = get_block_wrapper_attributes( array( 'class' => $align_class_name ) );

	return sprintf(
		'<div %1$s>%2$s</div>',
		$wrapper_attributes,
		$display_string
	);
}


/**
 * Registers the `core/post-time-to-read` block on the server.
 *
 * @since 6.9.0
 */
function register_block_core_post_time_to_read() {
	register_block_type_from_metadata(
		__DIR__ . '/post-time-to-read',
		array(
			'render_callback' => 'render_block_core_post_time_to_read',
		)
	);
}

add_action( 'init', 'register_block_core_post_time_to_read' );