✘✘ GRAYBYTE WORDPRESS FILE MANAGER ✘✘

​🇳​​🇦​​🇲​​🇪♯➤ webm004.cluster127.gra.hosting.ovh.net ​🇻​♯➤ 6.18.42-ovh-vps-grsec-zfs+ #1 SMP 🇾​♯➤ 2026

𝗛𝗢𝗠𝗘 𝗜𝗗 ♯➤ 54.36.91.62 ♯➤ 𝗔𝗗𝗠𝗜𝗡 𝗜𝗗 216.73.216.42
𝗢𝗣𝗧𝗜𝗢𝗡𝗦 ♯ CRL ♯➤ 𝗢𝗞 ┃ WGT ♯➤ 𝗢𝗞 ┃ SDO ♯➤ 𝗢𝗙𝗙 ┃ PKEX ♯➤ 𝗢𝗙𝗙
𝗗𝗘𝗔𝗖𝗧𝗜𝗩𝗔𝗧𝗘𝗗 ♯➤ _dyuweyrj4,_dyuweyrj4r,dl

𝗛𝗢𝗠𝗘
𝗖𝗨𝗥𝗥𝗘𝗡𝗧 𝗙𝗜𝗟𝗘 : /home/docteuh/www/plugins/wordpress-seo/src//howto.php
<?php

namespace Yoast\WP\SEO\Generators\Schema;

use Yoast\WP\SEO\Config\Schema_IDs;

/**
 * Returns schema HowTo data.
 */
class HowTo extends Abstract_Schema_Piece {

	/**
	 * Determines whether or not a piece should be added to the graph.
	 *
	 * @return bool
	 */
	public function is_needed() {
		return ! empty( $this->context->blocks['yoast/how-to-block'] );
	}

	/**
	 * Renders a list of questions, referencing them by ID.
	 *
	 * @return array Our Schema graph.
	 */
	public function generate() {
		$graph = [];

		foreach ( $this->context->blocks['yoast/how-to-block'] as $index => $block ) {
			$this->add_how_to( $graph, $block, $index );
		}

		return $graph;
	}

	/**
	 * Adds the duration of the task to the Schema.
	 *
	 * @param array $data       Our How-To schema data.
	 * @param array $attributes The block data attributes.
	 *
	 * @return void
	 */
	private function add_duration( &$data, $attributes ) {
		if ( empty( $attributes['hasDuration'] ) ) {
			return;
		}

		$days    = empty( $attributes['days'] ) ? 0 : $attributes['days'];
		$hours   = empty( $attributes['hours'] ) ? 0 : $attributes['hours'];
		$minutes = empty( $attributes['minutes'] ) ? 0 : $attributes['minutes'];

		if ( ( $days + $hours + $minutes ) > 0 ) {
			$data['totalTime'] = \esc_attr( 'P' . $days . 'DT' . $hours . 'H' . $minutes . 'M' );
		}
	}

	/**
	 * Adds the steps to our How-To output.
	 *
	 * @param array $data  Our How-To schema data.
	 * @param array $steps Our How-To block's steps.
	 *
	 * @return void
	 */
	private function add_steps( &$data, $steps ) {
		foreach ( $steps as $step ) {
			$schema_id   = $this->context->canonical . '#' . \esc_attr( $step['id'] );
			$schema_step = [
				'@type' => 'HowToStep',
				'url'   => $schema_id,
			];

			if ( isset( $step['jsonText'] ) ) {
				$json_text = $this->helpers->schema->html->sanitize( $step['jsonText'] );
			}

			if ( isset( $step['jsonName'] ) ) {
				$json_name = $this->helpers->schema->html->smart_strip_tags( $step['jsonName'] );
			}

			if ( empty( $json_name ) ) {
				if ( empty( $step['text'] ) ) {
					continue;
				}

				$schema_step['text'] = '';

				$this->add_step_image( $schema_step, $step );

				// If there is no text and no image, don't output the step.
				if ( empty( $json_text ) && empty( $schema_step['image'] ) ) {
					continue;
				}

				if ( ! empty( $json_text ) ) {
					$schema_step['text'] = $json_text;
				}
			}

			elseif ( empty( $json_text ) ) {
				$schema_step['text'] = $json_name;
			}
			else {
				$schema_step['name'] = $json_name;

				$this->add_step_description( $schema_step, $json_text );
				$this->add_step_image( $schema_step, $step );
			}

			$data['step'][] = $schema_step;
		}
	}

	/**
	 * Checks if we have a step description, if we do, add it.
	 *
	 * @param array  $schema_step Our Schema output for the Step.
	 * @param string $json_text   The step text.
	 *
	 * @return void
	 */
	private function add_step_description( &$schema_step, $json_text ) {
		// Decode HTML entities.
		$json_text = \html_entity_decode( $json_text );
		// Remove the image from the text if it exists. Search and replace the img tag.
		$json_text = \preg_replace( '/<img[^>]+>/i', '', $json_text );
		// Strip all HTML tags to ensure plain text for the JSON-LD output.
		$json_text = \wp_strip_all_tags( $json_text );
		// Trim whitespace.
		$json_text = \trim( $json_text );

		$schema_step['itemListElement'] = [
			[
				'@type' => 'HowToDirection',
				'text'  => $json_text,
			],
		];
	}

	/**
	 * Checks if we have a step image, if we do, add it.
	 *
	 * @param array $schema_step Our Schema output for the Step.
	 * @param array $step        The step block data.
	 *
	 * @return void
	 */
	private function add_step_image( &$schema_step, $step ) {
		if ( isset( $step['images'] ) && \is_array( $step['images'] ) ) {
			foreach ( $step['images'] as $image ) {
				if ( isset( $image['type'] ) && $image['type'] === 'img' ) {
					$schema_step['image'] = $this->get_image_schema( \esc_url( $image['props']['src'] ) );
				}
			}
		}
		elseif ( isset( $step['text'] ) && \is_array( $step['text'] ) ) {
			// Backwards compatibility for older How-To blocks.
			foreach ( $step['text'] as $line ) {
				if ( \is_array( $line ) && isset( $line['type'] ) && $line['type'] === 'img' ) {
					$schema_step['image'] = $this->get_image_schema( \esc_url( $line['props']['src'] ) );
				}
			}
		}
	}

	/**
	 * Generates the HowTo schema for a block.
	 *
	 * @param array $graph Our Schema data.
	 * @param array $block The How-To block content.
	 * @param int   $index The index of the current block.
	 *
	 * @return void
	 */
	protected function add_how_to( &$graph, $block, $index ) {
		$data = [
			'@type'            => 'HowTo',
			'@id'              => $this->context->canonical . '#howto-' . ( $index + 1 ),
			'name'             => $this->helpers->schema->html->smart_strip_tags( $this->helpers->post->get_post_title_with_fallback( $this->context->id ) ),
			'mainEntityOfPage' => [ '@id' => $this->context->main_schema_id ],
			'description'      => '',
		];

		if ( $this->context->has_article ) {
			$data['mainEntityOfPage'] = [ '@id' => $this->context->main_schema_id . Schema_IDs::ARTICLE_HASH ];
		}

		if ( isset( $block['attrs']['jsonDescription'] ) ) {
			$data['description'] = $this->helpers->schema->html->sanitize( $block['attrs']['jsonDescription'] );
		}

		$this->add_duration( $data, $block['attrs'] );

		if ( isset( $block['attrs']['steps'] ) ) {
			$this->add_steps( $data, $block['attrs']['steps'] );
		}

		$data = $this->helpers->schema->language->add_piece_language( $data );

		$graph[] = $data;
	}

	/**
	 * Generates the image schema from the attachment $url.
	 *
	 * @param string $url Attachment url.
	 *
	 * @return array Image schema.
	 */
	protected function get_image_schema( $url ) {
		$schema_id = $this->context->canonical . '#schema-image-' . \md5( $url );

		return $this->helpers->schema->image->generate_from_url( $schema_id, $url );
	}
}


Current_dir [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ] Document_root [ 𝗪𝗥𝗜𝗧𝗘𝗔𝗕𝗟𝗘 ]


[ Back ]
𝗡𝗔𝗠𝗘
𝗦𝗜𝗭𝗘
𝗟𝗔𝗦𝗧 𝗧𝗢𝗨𝗖𝗛
𝗨𝗦𝗘𝗥
𝗦𝗧𝗔𝗧𝗨𝗦
𝗙𝗨𝗡𝗖𝗧𝗜𝗢𝗡𝗦
..
--
11 Sep 2026 8.22 PM
docteuh / users
0755
abilities
--
4 Sep 2026 12.46 AM
docteuh / users
0755
actions
--
4 Sep 2026 12.45 AM
docteuh / users
0755
ai
--
4 Sep 2026 3.25 AM
docteuh / users
0755
ai-consent
--
4 Sep 2026 12.46 AM
docteuh / users
0755
ai-free-sparks
--
31 Aug 2026 5.40 AM
docteuh / users
0755
ai-http-request
--
3 Sep 2026 11.53 PM
docteuh / users
0755
alerts
--
4 Sep 2026 1.53 AM
docteuh / users
0755
analytics
--
4 Sep 2026 1.53 AM
docteuh / users
0755
builders
--
3 Sep 2026 11.43 PM
docteuh / users
0755
commands
--
4 Sep 2026 3.18 AM
docteuh / users
0755
conditionals
--
4 Sep 2026 2.39 AM
docteuh / users
0755
config
--
4 Sep 2026 1.54 AM
docteuh / users
0755
content-type-visibility
--
30 Aug 2026 11.37 PM
docteuh / users
0755
context
--
31 Aug 2026 1.47 PM
docteuh / users
0755
dashboard
--
4 Sep 2026 1.52 AM
docteuh / users
0755
deprecated
--
4 Sep 2026 2.28 AM
docteuh / users
0755
elementor
--
4 Sep 2026 1.53 AM
docteuh / users
0755
expiring-store
--
4 Sep 2026 2.27 AM
docteuh / users
0755
generated
--
4 Sep 2026 1.54 AM
docteuh / users
0755
generators
--
4 Sep 2026 2.59 AM
docteuh / users
0755
images
--
4 Sep 2026 2.25 AM
docteuh / users
0755
initializers
--
4 Sep 2026 2.25 AM
docteuh / users
0755
integrations
--
4 Sep 2026 1.58 AM
docteuh / users
0755
llms-txt
--
28 Aug 2026 8.30 PM
docteuh / users
0755
memoizers
--
4 Sep 2026 1.51 AM
docteuh / users
0755
models
--
4 Sep 2026 12.45 AM
docteuh / users
0755
myyoast-client
--
28 Aug 2026 11.32 AM
docteuh / users
0755
plans
--
4 Sep 2026 12.43 AM
docteuh / users
0755
presenters
--
4 Sep 2026 2.25 AM
docteuh / users
0755
promotions
--
4 Sep 2026 12.47 AM
docteuh / users
0755
repositories
--
3 Sep 2026 11.03 PM
docteuh / users
0755
routes
--
4 Sep 2026 2.25 AM
docteuh / users
0755
schema
--
4 Sep 2026 12.44 AM
docteuh / users
0755
schema-aggregator
--
30 Aug 2026 2.29 PM
docteuh / users
0755
surfaces
--
4 Sep 2026 12.44 AM
docteuh / users
0755
tracking
--
4 Sep 2026 1.52 AM
docteuh / users
0755
user-meta
--
4 Sep 2026 1.53 AM
docteuh / users
0755
values
--
4 Sep 2026 1.52 AM
docteuh / users
0755
wordpress
--
4 Sep 2026 2.25 AM
docteuh / users
0755
abstract-presenter.php
0.368 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
class-admin.php
12.73 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
class-capability-manager-vip.php
1.906 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
class-capability-utils.php
2.342 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
classes-surface.php
0.795 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
code-generator-20260830134557.php
0.64 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
code-generator.php
0.64 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
crawl-cleanup-permalinks.php
5.395 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
feature-flag-conditional-20260828011717.php
0.89 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
feature-flag-conditional.php
0.89 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
functions-20260827155733.php
0.681 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
functions.php
0.681 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
howto.php
5.86 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
icon-redirect-manager-20260827050340-20260827184106.svg
1.299 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
icon-redirect-manager-20260827050340.svg
1.299 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
icon-redirect-manager-20260827052159-20260827184108.svg
1.299 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
icon-redirect-manager-20260827052159.svg
1.299 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
icon-redirect-manager-20260827052201-20260827184019.svg
1.299 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
icon-redirect-manager-20260827052201.svg
1.299 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
icon-redirect-manager-20260827052203.svg
1.299 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
icon-redirect-manager-20260827052204.svg
1.299 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
icon-redirect-manager-20260827052405.svg
1.299 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
icon-redirect-manager-20260829050506-20260830004210-20260830004247-20260830005923-20260830051301.svg
1.299 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
icon-redirect-manager.svg
1.299 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
index.php
0.037 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
indexable-author-archive-presentation.php
4.21 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
loadable-interface.php
0.279 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
loader.php
6.886 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
main-20260827124941.php
1.824 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
main.php
1.824 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
meta-author-presenter.php
1.345 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
non-multisite-conditional.php
0.363 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
open-graph-conditional.php
0.711 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
primary-term.php
0.652 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
schema-helpers-surface.php
2.85 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
semrush-client-20260827182002.php
2.617 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
settings-integration.php
36.304 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
string-helper.php
1.189 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
uninstall-integration.php
0.982 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
webpack.config.js
0.623 KB
18 Jun 2026 6.25 PM
docteuh / users
0644
woocommerce-conditional.php
0.402 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
wp-seo-main.php
17.215 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
wpml-config.xml
2.081 KB
23 Jun 2026 6.20 PM
docteuh / users
0644
wrapper.php
1.439 KB
23 Jun 2026 6.19 PM
docteuh / users
0644
xmlrpc.php
1.223 KB
23 Jun 2026 6.19 PM
docteuh / users
0644

✘✘ GRAYBYTE WORDPRESS FILE MANAGER @ 2026 CONTACT ME ✘✘
Static GIF Static GIF