View file File name : estimated-reading-time-block.php Content :<?php namespace Yoast\WP\SEO\Premium\Integrations\Blocks; use Yoast\WP\SEO\Integrations\Blocks\Dynamic_Block; /** * Estimated_Reading_Time_Block class. * * @phpcs:disable Yoast.NamingConventions.ObjectNameDepth.MaxExceeded */ class Estimated_Reading_Time_Block extends Dynamic_Block { /** * The name of the block. * * @var string */ protected $block_name = 'estimated-reading-time'; /** * Holds the clock icon HTML. * * @var string */ protected $clock_icon = '<span class="yoast-reading-time__icon"><svg aria-hidden="true" focusable="false" data-icon="clock" width="20" height="20" fill="none" stroke="currentColor" style="display:inline-block;vertical-align:-0.1em" role="img" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg></span><span class="yoast-reading-time__spacer" style="display:inline-block;width:1em"></span>'; /** * The editor script for the block. * * @var string */ protected $script = 'wp-seo-premium-dynamic-blocks'; /** * Registers the block. * * @return void */ public function register_block() { \register_block_type( 'yoast-seo/' . $this->block_name, [ 'editor_script' => $this->script, 'render_callback' => [ $this, 'present' ], 'attributes' => [ 'className' => [ 'default' => '', 'type' => 'string', ], 'estimatedReadingTime' => [ 'type' => 'number', 'default' => 0, ], 'descriptiveText' => [ 'type' => 'string', 'default' => \__( 'Estimated reading time:', 'wordpress-seo-premium' ) . ' ', ], 'showDescriptiveText' => [ 'type' => 'boolean', 'default' => true, ], 'showIcon' => [ 'type' => 'boolean', 'default' => true, ], ], ] ); } /** * Presents the block output. * * @param array $attributes The block attributes. * @param string $content The content. * * @return string The block output. */ public function present( $attributes, $content = '' ) { $content = \preg_replace( '/<span class="yoast-reading-time__time-unit">.*<\/span>/', '<span class="yoast-reading-time__time-unit"> ' . \sprintf( \_n( 'minute', 'minutes', $attributes['estimatedReadingTime'], 'wordpress-seo-premium' ), $attributes['estimatedReadingTime'] ) . '</span>', $content, 1 ); if ( $attributes['showIcon'] ) { // Replace 15.7 icon placeholder. $content = \preg_replace( '/ICON_PLACEHOLDER/', $this->clock_icon, $content, 1 ); // Replace the 15.8+ icon placeholder. return \preg_replace( '/<span class="yoast-reading-time__icon"><\/span>/', $this->clock_icon, $content, 1 ); } return $content; } }