Submit
Path:
~
/
home
/
caidadmin
/
dev.heralds.sca-caid.org
/
wp-includes
/
File Content:
blocks.php
<?php /** * Functions related to registering and parsing blocks. * * @package WordPress * @subpackage Blocks * @since 5.0.0 */ /** * Removes the block asset's path prefix if provided. * * @since 5.5.0 * * @param string $asset_handle_or_path Asset handle or prefixed path. * @return string Path without the prefix or the original value. */ function remove_block_asset_path_prefix( $asset_handle_or_path ) { $path_prefix = 'file:'; if ( 0 !== strpos( $asset_handle_or_path, $path_prefix ) ) { return $asset_handle_or_path; } return substr( $asset_handle_or_path, strlen( $path_prefix ) ); } /** * Generates the name for an asset based on the name of the block * and the field name provided. * * @since 5.5.0 * * @param string $block_name Name of the block. * @param string $field_name Name of the metadata field. * @return string Generated asset name for the block's field. */ function generate_block_asset_handle( $block_name, $field_name ) { if ( 0 === strpos( $block_name, 'core/' ) ) { $asset_handle = str_replace( 'core/', 'wp-block-', $block_name ); if ( 0 === strpos( $field_name, 'editor' ) ) { $asset_handle .= '-editor'; } if ( 0 === strpos( $field_name, 'view' ) ) { $asset_handle .= '-view'; } return $asset_handle; } $field_mappings = array( 'editorScript' => 'editor-script', 'script' => 'script', 'viewScript' => 'view-script', 'editorStyle' => 'editor-style', 'style' => 'style', ); return str_replace( '/', '-', $block_name ) . '-' . $field_mappings[ $field_name ]; } /** * Finds a script handle for the selected block metadata field. It detects * when a path to file was provided and finds a corresponding asset file * with details necessary to register the script under automatically * generated handle name. It returns unprocessed script handle otherwise. * * @since 5.5.0 * * @param array $metadata Block metadata. * @param string $field_name Field name to pick from metadata. * @return string|false Script handle provided directly or created through * script's registration, or false on failure. */ function register_block_script_handle( $metadata, $field_name ) { if ( empty( $metadata[ $field_name ] ) ) { return false; } $script_handle = $metadata[ $field_name ]; $script_path = remove_block_asset_path_prefix( $metadata[ $field_name ] ); if ( $script_handle === $script_path ) { return $script_handle; } $script_handle = generate_block_asset_handle( $metadata['name'], $field_name ); $script_asset_path = wp_normalize_path( realpath( dirname( $metadata['file'] ) . '/' . substr_replace( $script_path, '.asset.php', - strlen( '.js' ) ) ) ); if ( ! file_exists( $script_asset_path ) ) { _doing_it_wrong( __FUNCTION__, sprintf( /* translators: 1: Field name, 2: Block name. */ __( 'The asset file for the "%1$s" defined in "%2$s" block definition is missing.' ), $field_name, $metadata['name'] ), '5.5.0' ); return false; } // Path needs to be normalized to work in Windows env. $wpinc_path_norm = wp_normalize_path( ABSPATH . WPINC ); $script_path_norm = wp_normalize_path( realpath( dirname( $metadata['file'] ) . '/' . $script_path ) ); $is_core_block = isset( $metadata['file'] ) && 0 === strpos( $metadata['file'], $wpinc_path_norm ); $script_uri = $is_core_block ? includes_url( str_replace( $wpinc_path_norm, '', $script_path_norm ) ) : plugins_url( $script_path, $metadata['file'] ); $script_asset = require $script_asset_path; $script_dependencies = isset( $script_asset['dependencies'] ) ? $script_asset['dependencies'] : array(); $result = wp_register_script( $script_handle, $script_uri, $script_dependencies, isset( $script_asset['version'] ) ? $script_asset['version'] : false ); if ( ! $result ) { return false; } if ( ! empty( $metadata['textdomain'] ) && in_array( 'wp-i18n', $script_dependencies, true ) ) { wp_set_script_translations( $script_handle, $metadata['textdomain'] ); } return $script_handle; } /** * Finds a style handle for the block metadata field. It detects when a path * to file was provided and registers the style under automatically * generated handle name. It returns unprocessed style handle otherwise. * * @since 5.5.0 * * @param array $metadata Block metadata. * @param string $field_name Field name to pick from metadata. * @return string|false Style handle provided directly or created through * style's registration, or false on failure. */ function register_block_style_handle( $metadata, $field_name ) { if ( empty( $metadata[ $field_name ] ) ) { return false; } $wpinc_path_norm = wp_normalize_path( ABSPATH . WPINC ); $is_core_block = isset( $metadata['file'] ) && 0 === strpos( $metadata['file'], $wpinc_path_norm ); if ( $is_core_block && ! wp_should_load_separate_core_block_assets() ) { return false; } // Check whether styles should have a ".min" suffix or not. $suffix = SCRIPT_DEBUG ? '' : '.min'; $style_handle = $metadata[ $field_name ]; $style_path = remove_block_asset_path_prefix( $metadata[ $field_name ] ); if ( $style_handle === $style_path && ! $is_core_block ) { return $style_handle; } $style_uri = plugins_url( $style_path, $metadata['file'] ); if ( $is_core_block ) { $style_path = "style$suffix.css"; $style_uri = includes_url( 'blocks/' . str_replace( 'core/', '', $metadata['name'] ) . "/style$suffix.css" ); } $style_handle = generate_block_asset_handle( $metadata['name'], $field_name ); $block_dir = dirname( $metadata['file'] ); $style_file = realpath( "$block_dir/$style_path" ); $has_style_file = false !== $style_file; $version = ! $is_core_block && isset( $metadata['version'] ) ? $metadata['version'] : false; $style_uri = $has_style_file ? $style_uri : false; $result = wp_register_style( $style_handle, $style_uri, array(), $version ); if ( file_exists( str_replace( '.css', '-rtl.css', $style_file ) ) ) { wp_style_add_data( $style_handle, 'rtl', 'replace' ); } if ( $has_style_file ) { wp_style_add_data( $style_handle, 'path', $style_file ); } $rtl_file = str_replace( "$suffix.css", "-rtl$suffix.css", $style_file ); if ( is_rtl() && file_exists( $rtl_file ) ) { wp_style_add_data( $style_handle, 'path', $rtl_file ); } return $result ? $style_handle : false; } /** * Gets i18n schema for block's metadata read from `block.json` file. * * @since 5.9.0 * * @return array The schema for block's metadata. */ function get_block_metadata_i18n_schema() { static $i18n_block_schema; if ( ! isset( $i18n_block_schema ) ) { $i18n_block_schema = wp_json_file_decode( __DIR__ . '/block-i18n.json' ); } return $i18n_block_schema; } /** * Registers a block type from the metadata stored in the `block.json` file. * * @since 5.5.0 * @since 5.7.0 Added support for `textdomain` field and i18n handling for all translatable fields. * @since 5.9.0 Added support for `variations` and `viewScript` fields. * * @param string $file_or_folder Path to the JSON file with metadata definition for * the block or path to the folder where the `block.json` file is located. * If providing the path to a JSON file, the filename must end with `block.json`. * @param array $args Optional. Array of block type arguments. Accepts any public property * of `WP_Block_Type`. See WP_Block_Type::__construct() for information * on accepted arguments. Default empty array. * @return WP_Block_Type|false The registered block type on success, or false on failure. */ function register_block_type_from_metadata( $file_or_folder, $args = array() ) { $filename = 'block.json'; $metadata_file = ( substr( $file_or_folder, -strlen( $filename ) ) !== $filename ) ? trailingslashit( $file_or_folder ) . $filename : $file_or_folder; if ( ! file_exists( $metadata_file ) ) { return false; } $metadata = wp_json_file_decode( $metadata_file, array( 'associative' => true ) ); if ( ! is_array( $metadata ) || empty( $metadata['name'] ) ) { return false; } $metadata['file'] = wp_normalize_path( $metadata_file ); /** * Filters the metadata provided for registering a block type. * * @since 5.7.0 * * @param array $metadata Metadata for registering a block type. */ $metadata = apply_filters( 'block_type_metadata', $metadata ); // Add `style` and `editor_style` for core blocks if missing. if ( ! empty( $metadata['name'] ) && 0 === strpos( $metadata['name'], 'core/' ) ) { $block_name = str_replace( 'core/', '', $metadata['name'] ); if ( ! isset( $metadata['style'] ) ) { $metadata['style'] = "wp-block-$block_name"; } if ( ! isset( $metadata['editorStyle'] ) ) { $metadata['editorStyle'] = "wp-block-{$block_name}-editor"; } } $settings = array(); $property_mappings = array( 'apiVersion' => 'api_version', 'title' => 'title', 'category' => 'category', 'parent' => 'parent', 'icon' => 'icon', 'description' => 'description', 'keywords' => 'keywords', 'attributes' => 'attributes', 'providesContext' => 'provides_context', 'usesContext' => 'uses_context', 'supports' => 'supports', 'styles' => 'styles', 'variations' => 'variations', 'example' => 'example', ); $textdomain = ! empty( $metadata['textdomain'] ) ? $metadata['textdomain'] : null; $i18n_schema = get_block_metadata_i18n_schema(); foreach ( $property_mappings as $key => $mapped_key ) { if ( isset( $metadata[ $key ] ) ) { $settings[ $mapped_key ] = $metadata[ $key ]; if ( $textdomain && isset( $i18n_schema->$key ) ) { $settings[ $mapped_key ] = translate_settings_using_i18n_schema( $i18n_schema->$key, $settings[ $key ], $textdomain ); } } } if ( ! empty( $metadata['editorScript'] ) ) { $settings['editor_script'] = register_block_script_handle( $metadata, 'editorScript' ); } if ( ! empty( $metadata['script'] ) ) { $settings['script'] = register_block_script_handle( $metadata, 'script' ); } if ( ! empty( $metadata['viewScript'] ) ) { $settings['view_script'] = register_block_script_handle( $metadata, 'viewScript' ); } if ( ! empty( $metadata['editorStyle'] ) ) { $settings['editor_style'] = register_block_style_handle( $metadata, 'editorStyle' ); } if ( ! empty( $metadata['style'] ) ) { $settings['style'] = register_block_style_handle( $metadata, 'style' ); } /** * Filters the settings determined from the block type metadata. * * @since 5.7.0 * * @param array $settings Array of determined settings for registering a block type. * @param array $metadata Metadata provided for registering a block type. */ $settings = apply_filters( 'block_type_metadata_settings', array_merge( $settings, $args ), $metadata ); return WP_Block_Type_Registry::get_instance()->register( $metadata['name'], $settings ); } /** * Registers a block type. The recommended way is to register a block type using * the metadata stored in the `block.json` file. * * @since 5.0.0 * @since 5.8.0 First parameter now accepts a path to the `block.json` file. * * @param string|WP_Block_Type $block_type Block type name including namespace, or alternatively * a path to the JSON file with metadata definition for the block, * or a path to the folder where the `block.json` file is located, * or a complete WP_Block_Type instance. * In case a WP_Block_Type is provided, the $args parameter will be ignored. * @param array $args Optional. Array of block type arguments. Accepts any public property * of `WP_Block_Type`. See WP_Block_Type::__construct() for information * on accepted arguments. Default empty array. * * @return WP_Block_Type|false The registered block type on success, or false on failure. */ function register_block_type( $block_type, $args = array() ) { if ( is_string( $block_type ) && file_exists( $block_type ) ) { return register_block_type_from_metadata( $block_type, $args ); } return WP_Block_Type_Registry::get_instance()->register( $block_type, $args ); } /** * Unregisters a block type. * * @since 5.0.0 * * @param string|WP_Block_Type $name Block type name including namespace, or alternatively * a complete WP_Block_Type instance. * @return WP_Block_Type|false The unregistered block type on success, or false on failure. */ function unregister_block_type( $name ) { return WP_Block_Type_Registry::get_instance()->unregister( $name ); } /** * Determine whether a post or content string has blocks. * * This test optimizes for performance rather than strict accuracy, detecting * the pattern of a block but not validating its structure. For strict accuracy, * you should use the block parser on post content. * * @since 5.0.0 * * @see parse_blocks() * * @param int|string|WP_Post|null $post Optional. Post content, post ID, or post object. * Defaults to global $post. * @return bool Whether the post has blocks. */ function has_blocks( $post = null ) { if ( ! is_string( $post ) ) { $wp_post = get_post( $post ); if ( $wp_post instanceof WP_Post ) { $post = $wp_post->post_content; } } return false !== strpos( (string) $post, '<!-- wp:' ); } /** * Determine whether a $post or a string contains a specific block type. * * This test optimizes for performance rather than strict accuracy, detecting * whether the block type exists but not validating its structure and not checking * reusable blocks. For strict accuracy, you should use the block parser on post content. * * @since 5.0.0 * * @see parse_blocks() * * @param string $block_name Full block type to look for. * @param int|string|WP_Post|null $post Optional. Post content, post ID, or post object. * Defaults to global $post. * @return bool Whether the post content contains the specified block. */ function has_block( $block_name, $post = null ) { if ( ! has_blocks( $post ) ) { return false; } if ( ! is_string( $post ) ) { $wp_post = get_post( $post ); if ( $wp_post instanceof WP_Post ) { $post = $wp_post->post_content; } } /* * Normalize block name to include namespace, if provided as non-namespaced. * This matches behavior for WordPress 5.0.0 - 5.3.0 in matching blocks by * their serialized names. */ if ( false === strpos( $block_name, '/' ) ) { $block_name = 'core/' . $block_name; } // Test for existence of block by its fully qualified name. $has_block = false !== strpos( $post, '<!-- wp:' . $block_name . ' ' ); if ( ! $has_block ) { /* * If the given block name would serialize to a different name, test for * existence by the serialized form. */ $serialized_block_name = strip_core_block_namespace( $block_name ); if ( $serialized_block_name !== $block_name ) { $has_block = false !== strpos( $post, '<!-- wp:' . $serialized_block_name . ' ' ); } } return $has_block; } /** * Returns an array of the names of all registered dynamic block types. * * @since 5.0.0 * * @return string[] Array of dynamic block names. */ function get_dynamic_block_names() { $dynamic_block_names = array(); $block_types = WP_Block_Type_Registry::get_instance()->get_all_registered(); foreach ( $block_types as $block_type ) { if ( $block_type->is_dynamic() ) { $dynamic_block_names[] = $block_type->name; } } return $dynamic_block_names; } /** * Given an array of attributes, returns a string in the serialized attributes * format prepared for post content. * * The serialized result is a JSON-encoded string, with unicode escape sequence * substitution for characters which might otherwise interfere with embedding * the result in an HTML comment. * * This function must produce output that remains in sync with the output of * the serializeAttributes JavaScript function in the block editor in order * to ensure consistent operation between PHP and JavaScript. * * @since 5.3.1 * * @param array $block_attributes Attributes object. * @return string Serialized attributes. */ function serialize_block_attributes( $block_attributes ) { $encoded_attributes = wp_json_encode( $block_attributes, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE ); $encoded_attributes = preg_replace( '/--/', '\\u002d\\u002d', $encoded_attributes ); $encoded_attributes = preg_replace( '/</', '\\u003c', $encoded_attributes ); $encoded_attributes = preg_replace( '/>/', '\\u003e', $encoded_attributes ); $encoded_attributes = preg_replace( '/&/', '\\u0026', $encoded_attributes ); // Regex: /\\"/ $encoded_attributes = preg_replace( '/\\\\"/', '\\u0022', $encoded_attributes ); return $encoded_attributes; } /** * Returns the block name to use for serialization. This will remove the default * "core/" namespace from a block name. * * @since 5.3.1 * * @param string $block_name Original block name. * @return string Block name to use for serialization. */ function strip_core_block_namespace( $block_name = null ) { if ( is_string( $block_name ) && 0 === strpos( $block_name, 'core/' ) ) { return substr( $block_name, 5 ); } return $block_name; } /** * Returns the content of a block, including comment delimiters. * * @since 5.3.1 * * @param string|null $block_name Block name. Null if the block name is unknown, * e.g. Classic blocks have their name set to null. * @param array $block_attributes Block attributes. * @param string $block_content Block save content. * @return string Comment-delimited block content. */ function get_comment_delimited_block_content( $block_name, $block_attributes, $block_content ) { if ( is_null( $block_name ) ) { return $block_content; } $serialized_block_name = strip_core_block_namespace( $block_name ); $serialized_attributes = empty( $block_attributes ) ? '' : serialize_block_attributes( $block_attributes ) . ' '; if ( empty( $block_content ) ) { return sprintf( '<!-- wp:%s %s/-->', $serialized_block_name, $serialized_attributes ); } return sprintf( '<!-- wp:%s %s-->%s<!-- /wp:%s -->', $serialized_block_name, $serialized_attributes, $block_content, $serialized_block_name ); } /** * Returns the content of a block, including comment delimiters, serializing all * attributes from the given parsed block. * * This should be used when preparing a block to be saved to post content. * Prefer `render_block` when preparing a block for display. Unlike * `render_block`, this does not evaluate a block's `render_callback`, and will * instead preserve the markup as parsed. * * @since 5.3.1 * * @param WP_Block_Parser_Block $block A single parsed block object. * @return string String of rendered HTML. */ function serialize_block( $block ) { $block_content = ''; $index = 0; foreach ( $block['innerContent'] as $chunk ) { $block_content .= is_string( $chunk ) ? $chunk : serialize_block( $block['innerBlocks'][ $index++ ] ); } if ( ! is_array( $block['attrs'] ) ) { $block['attrs'] = array(); } return get_comment_delimited_block_content( $block['blockName'], $block['attrs'], $block_content ); } /** * Returns a joined string of the aggregate serialization of the given parsed * blocks. * * @since 5.3.1 * * @param WP_Block_Parser_Block[] $blocks Parsed block objects. * @return string String of rendered HTML. */ function serialize_blocks( $blocks ) { return implode( '', array_map( 'serialize_block', $blocks ) ); } /** * Filters and sanitizes block content to remove non-allowable HTML from * parsed block attribute values. * * @since 5.3.1 * * @param string $text Text that may contain block content. * @param array[]|string $allowed_html An array of allowed HTML elements * and attributes, or a context name * such as 'post'. * @param string[] $allowed_protocols Array of allowed URL protocols. * @return string The filtered and sanitized content result. */ function filter_block_content( $text, $allowed_html = 'post', $allowed_protocols = array() ) { $result = ''; $blocks = parse_blocks( $text ); foreach ( $blocks as $block ) { $block = filter_block_kses( $block, $allowed_html, $allowed_protocols ); $result .= serialize_block( $block ); } return $result; } /** * Filters and sanitizes a parsed block to remove non-allowable HTML from block * attribute values. * * @since 5.3.1 * * @param WP_Block_Parser_Block $block The parsed block object. * @param array[]|string $allowed_html An array of allowed HTML * elements and attributes, or a * context name such as 'post'. * @param string[] $allowed_protocols Allowed URL protocols. * @return array The filtered and sanitized block object result. */ function filter_block_kses( $block, $allowed_html, $allowed_protocols = array() ) { $block['attrs'] = filter_block_kses_value( $block['attrs'], $allowed_html, $allowed_protocols ); if ( is_array( $block['innerBlocks'] ) ) { foreach ( $block['innerBlocks'] as $i => $inner_block ) { $block['innerBlocks'][ $i ] = filter_block_kses( $inner_block, $allowed_html, $allowed_protocols ); } } return $block; } /** * Filters and sanitizes a parsed block attribute value to remove non-allowable * HTML. * * @since 5.3.1 * * @param string[]|string $value The attribute value to filter. * @param array[]|string $allowed_html An array of allowed HTML elements * and attributes, or a context name * such as 'post'. * @param string[] $allowed_protocols Array of allowed URL protocols. * @return string[]|string The filtered and sanitized result. */ function filter_block_kses_value( $value, $allowed_html, $allowed_protocols = array() ) { if ( is_array( $value ) ) { foreach ( $value as $key => $inner_value ) { $filtered_key = filter_block_kses_value( $key, $allowed_html, $allowed_protocols ); $filtered_value = filter_block_kses_value( $inner_value, $allowed_html, $allowed_protocols ); if ( $filtered_key !== $key ) { unset( $value[ $key ] ); } $value[ $filtered_key ] = $filtered_value; } } elseif ( is_string( $value ) ) { return wp_kses( $value, $allowed_html, $allowed_protocols ); } return $value; } /** * Parses blocks out of a content string, and renders those appropriate for the excerpt. * * As the excerpt should be a small string of text relevant to the full post content, * this function renders the blocks that are most likely to contain such text. * * @since 5.0.0 * * @param string $content The content to parse. * @return string The parsed and filtered content. */ function excerpt_remove_blocks( $content ) { $allowed_inner_blocks = array( // Classic blocks have their blockName set to null. null, 'core/freeform', 'core/heading', 'core/html', 'core/list', 'core/media-text', 'core/paragraph', 'core/preformatted', 'core/pullquote', 'core/quote', 'core/table', 'core/verse', ); $allowed_wrapper_blocks = array( 'core/columns', 'core/column', 'core/group', ); /** * Filters the list of blocks that can be used as wrapper blocks, allowing * excerpts to be generated from the `innerBlocks` of these wrappers. * * @since 5.8.0 * * @param string[] $allowed_wrapper_blocks The list of names of allowed wrapper blocks. */ $allowed_wrapper_blocks = apply_filters( 'excerpt_allowed_wrapper_blocks', $allowed_wrapper_blocks ); $allowed_blocks = array_merge( $allowed_inner_blocks, $allowed_wrapper_blocks ); /** * Filters the list of blocks that can contribute to the excerpt. * * If a dynamic block is added to this list, it must not generate another * excerpt, as this will cause an infinite loop to occur. * * @since 5.0.0 * * @param string[] $allowed_blocks The list of names of allowed blocks. */ $allowed_blocks = apply_filters( 'excerpt_allowed_blocks', $allowed_blocks ); $blocks = parse_blocks( $content ); $output = ''; foreach ( $blocks as $block ) { if ( in_array( $block['blockName'], $allowed_blocks, true ) ) { if ( ! empty( $block['innerBlocks'] ) ) { if ( in_array( $block['blockName'], $allowed_wrapper_blocks, true ) ) { $output .= _excerpt_render_inner_blocks( $block, $allowed_blocks ); continue; } // Skip the block if it has disallowed or nested inner blocks. foreach ( $block['innerBlocks'] as $inner_block ) { if ( ! in_array( $inner_block['blockName'], $allowed_inner_blocks, true ) || ! empty( $inner_block['innerBlocks'] ) ) { continue 2; } } } $output .= render_block( $block ); } } return $output; } /** * Render inner blocks from the allowed wrapper blocks * for generating an excerpt. * * @since 5.8.0 * @access private * * @param array $parsed_block The parsed block. * @param array $allowed_blocks The list of allowed inner blocks. * @return string The rendered inner blocks. */ function _excerpt_render_inner_blocks( $parsed_block, $allowed_blocks ) { $output = ''; foreach ( $parsed_block['innerBlocks'] as $inner_block ) { if ( ! in_array( $inner_block['blockName'], $allowed_blocks, true ) ) { continue; } if ( empty( $inner_block['innerBlocks'] ) ) { $output .= render_block( $inner_block ); } else { $output .= _excerpt_render_inner_blocks( $inner_block, $allowed_blocks ); } } return $output; } /** * Renders a single block into a HTML string. * * @since 5.0.0 * * @global WP_Post $post The post to edit. * * @param array $parsed_block A single parsed block object. * @return string String of rendered HTML. */ function render_block( $parsed_block ) { global $post; $parent_block = null; /** * Allows render_block() to be short-circuited, by returning a non-null value. * * @since 5.1.0 * @since 5.9.0 The `$parent_block` parameter was added. * * @param string|null $pre_render The pre-rendered content. Default null. * @param array $parsed_block The block being rendered. * @param WP_Block|null $parent_block If this is a nested block, a reference to the parent block. */ $pre_render = apply_filters( 'pre_render_block', null, $parsed_block, $parent_block ); if ( ! is_null( $pre_render ) ) { return $pre_render; } $source_block = $parsed_block; /** * Filters the block being rendered in render_block(), before it's processed. * * @since 5.1.0 * @since 5.9.0 The `$parent_block` parameter was added. * * @param array $parsed_block The block being rendered. * @param array $source_block An un-modified copy of $parsed_block, as it appeared in the source content. * @param WP_Block|null $parent_block If this is a nested block, a reference to the parent block. */ $parsed_block = apply_filters( 'render_block_data', $parsed_block, $source_block, $parent_block ); $context = array(); if ( $post instanceof WP_Post ) { $context['postId'] = $post->ID; /* * The `postType` context is largely unnecessary server-side, since the ID * is usually sufficient on its own. That being said, since a block's * manifest is expected to be shared between the server and the client, * it should be included to consistently fulfill the expectation. */ $context['postType'] = $post->post_type; } /** * Filters the default context provided to a rendered block. * * @since 5.5.0 * @since 5.9.0 The `$parent_block` parameter was added. * * @param array $context Default context. * @param array $parsed_block Block being rendered, filtered by `render_block_data`. * @param WP_Block|null $parent_block If this is a nested block, a reference to the parent block. */ $context = apply_filters( 'render_block_context', $context, $parsed_block, $parent_block ); $block = new WP_Block( $parsed_block, $context ); return $block->render(); } /** * Parses blocks out of a content string. * * @since 5.0.0 * * @param string $content Post content. * @return array[] Array of parsed block objects. */ function parse_blocks( $content ) { /** * Filter to allow plugins to replace the server-side block parser * * @since 5.0.0 * * @param string $parser_class Name of block parser class. */ $parser_class = apply_filters( 'block_parser_class', 'WP_Block_Parser' ); $parser = new $parser_class(); return $parser->parse( $content ); } /** * Parses dynamic blocks out of `post_content` and re-renders them. * * @since 5.0.0 * * @param string $content Post content. * @return string Updated post content. */ function do_blocks( $content ) { $blocks = parse_blocks( $content ); $output = ''; foreach ( $blocks as $block ) { $output .= render_block( $block ); } // If there are blocks in this content, we shouldn't run wpautop() on it later. $priority = has_filter( 'the_content', 'wpautop' ); if ( false !== $priority && doing_filter( 'the_content' ) && has_blocks( $content ) ) { remove_filter( 'the_content', 'wpautop', $priority ); add_filter( 'the_content', '_restore_wpautop_hook', $priority + 1 ); } return $output; } /** * If do_blocks() needs to remove wpautop() from the `the_content` filter, this re-adds it afterwards, * for subsequent `the_content` usage. * * @access private * * @since 5.0.0 * * @param string $content The post content running through this filter. * @return string The unmodified content. */ function _restore_wpautop_hook( $content ) { $current_priority = has_filter( 'the_content', '_restore_wpautop_hook' ); add_filter( 'the_content', 'wpautop', $current_priority - 1 ); remove_filter( 'the_content', '_restore_wpautop_hook', $current_priority ); return $content; } /** * Returns the current version of the block format that the content string is using. * * If the string doesn't contain blocks, it returns 0. * * @since 5.0.0 * * @param string $content Content to test. * @return int The block format version is 1 if the content contains one or more blocks, 0 otherwise. */ function block_version( $content ) { return has_blocks( $content ) ? 1 : 0; } /** * Registers a new block style. * * @since 5.3.0 * * @param string $block_name Block type name including namespace. * @param array $style_properties Array containing the properties of the style name, * label, style (name of the stylesheet to be enqueued), * inline_style (string containing the CSS to be added). * @return bool True if the block style was registered with success and false otherwise. */ function register_block_style( $block_name, $style_properties ) { return WP_Block_Styles_Registry::get_instance()->register( $block_name, $style_properties ); } /** * Unregisters a block style. * * @since 5.3.0 * * @param string $block_name Block type name including namespace. * @param string $block_style_name Block style name. * @return bool True if the block style was unregistered with success and false otherwise. */ function unregister_block_style( $block_name, $block_style_name ) { return WP_Block_Styles_Registry::get_instance()->unregister( $block_name, $block_style_name ); } /** * Checks whether the current block type supports the feature requested. * * @since 5.8.0 * * @param WP_Block_Type $block_type Block type to check for support. * @param string $feature Name of the feature to check support for. * @param mixed $default Optional. Fallback value for feature support. Default false. * @return bool Whether the feature is supported. */ function block_has_support( $block_type, $feature, $default = false ) { $block_support = $default; if ( $block_type && property_exists( $block_type, 'supports' ) ) { $block_support = _wp_array_get( $block_type->supports, $feature, $default ); } return true === $block_support || is_array( $block_support ); } /** * Converts typography keys declared under `supports.*` to `supports.typography.*`. * * Displays a `_doing_it_wrong()` notice when a block using the older format is detected. * * @since 5.8.0 * * @param array $metadata Metadata for registering a block type. * @return array Filtered metadata for registering a block type. */ function wp_migrate_old_typography_shape( $metadata ) { if ( ! isset( $metadata['supports'] ) ) { return $metadata; } $typography_keys = array( '__experimentalFontFamily', '__experimentalFontStyle', '__experimentalFontWeight', '__experimentalLetterSpacing', '__experimentalTextDecoration', '__experimentalTextTransform', 'fontSize', 'lineHeight', ); foreach ( $typography_keys as $typography_key ) { $support_for_key = _wp_array_get( $metadata['supports'], array( $typography_key ), null ); if ( null !== $support_for_key ) { _doing_it_wrong( 'register_block_type_from_metadata()', sprintf( /* translators: 1: Block type, 2: Typography supports key, e.g: fontSize, lineHeight, etc. 3: block.json, 4: Old metadata key, 5: New metadata key. */ __( 'Block "%1$s" is declaring %2$s support in %3$s file under %4$s. %2$s support is now declared under %5$s.' ), $metadata['name'], "<code>$typography_key</code>", '<code>block.json</code>', "<code>supports.$typography_key</code>", "<code>supports.typography.$typography_key</code>" ), '5.8.0' ); _wp_array_set( $metadata['supports'], array( 'typography', $typography_key ), $support_for_key ); unset( $metadata['supports'][ $typography_key ] ); } } return $metadata; } /** * Helper function that constructs a WP_Query args array from * a `Query` block properties. * * It's used in Query Loop, Query Pagination Numbers and Query Pagination Next blocks. * * @since 5.8.0 * * @param WP_Block $block Block instance. * @param int $page Current query's page. * * @return array Returns the constructed WP_Query arguments. */ function build_query_vars_from_query_block( $block, $page ) { $query = array( 'post_type' => 'post', 'order' => 'DESC', 'orderby' => 'date', 'post__not_in' => array(), ); if ( isset( $block->context['query'] ) ) { if ( ! empty( $block->context['query']['postType'] ) ) { $post_type_param = $block->context['query']['postType']; if ( is_post_type_viewable( $post_type_param ) ) { $query['post_type'] = $post_type_param; } } if ( isset( $block->context['query']['sticky'] ) && ! empty( $block->context['query']['sticky'] ) ) { $sticky = get_option( 'sticky_posts' ); if ( 'only' === $block->context['query']['sticky'] ) { $query['post__in'] = $sticky; } else { $query['post__not_in'] = array_merge( $query['post__not_in'], $sticky ); } } if ( ! empty( $block->context['query']['exclude'] ) ) { $excluded_post_ids = array_map( 'intval', $block->context['query']['exclude'] ); $excluded_post_ids = array_filter( $excluded_post_ids ); $query['post__not_in'] = array_merge( $query['post__not_in'], $excluded_post_ids ); } if ( isset( $block->context['query']['perPage'] ) && is_numeric( $block->context['query']['perPage'] ) ) { $per_page = absint( $block->context['query']['perPage'] ); $offset = 0; if ( isset( $block->context['query']['offset'] ) && is_numeric( $block->context['query']['offset'] ) ) { $offset = absint( $block->context['query']['offset'] ); } $query['offset'] = ( $per_page * ( $page - 1 ) ) + $offset; $query['posts_per_page'] = $per_page; } if ( ! empty( $block->context['query']['categoryIds'] ) ) { $term_ids = array_map( 'intval', $block->context['query']['categoryIds'] ); $term_ids = array_filter( $term_ids ); $query['category__in'] = $term_ids; } if ( ! empty( $block->context['query']['tagIds'] ) ) { $term_ids = array_map( 'intval', $block->context['query']['tagIds'] ); $term_ids = array_filter( $term_ids ); $query['tag__in'] = $term_ids; } if ( isset( $block->context['query']['order'] ) && in_array( strtoupper( $block->context['query']['order'] ), array( 'ASC', 'DESC' ), true ) ) { $query['order'] = strtoupper( $block->context['query']['order'] ); } if ( isset( $block->context['query']['orderBy'] ) ) { $query['orderby'] = $block->context['query']['orderBy']; } if ( isset( $block->context['query']['author'] ) && (int) $block->context['query']['author'] > 0 ) { $query['author'] = (int) $block->context['query']['author']; } if ( ! empty( $block->context['query']['search'] ) ) { $query['s'] = $block->context['query']['search']; } } return $query; } /** * Helper function that returns the proper pagination arrow html for * `QueryPaginationNext` and `QueryPaginationPrevious` blocks based * on the provided `paginationArrow` from `QueryPagination` context. * * It's used in QueryPaginationNext and QueryPaginationPrevious blocks. * * @since 5.9.0 * * @param WP_Block $block Block instance. * @param boolean $is_next Flag for hanlding `next/previous` blocks. * * @return string|null Returns the constructed WP_Query arguments. */ function get_query_pagination_arrow( $block, $is_next ) { $arrow_map = array( 'none' => '', 'arrow' => array( 'next' => '→', 'previous' => '←', ), 'chevron' => array( 'next' => '»', 'previous' => '«', ), ); if ( ! empty( $block->context['paginationArrow'] ) && array_key_exists( $block->context['paginationArrow'], $arrow_map ) && ! empty( $arrow_map[ $block->context['paginationArrow'] ] ) ) { $pagination_type = $is_next ? 'next' : 'previous'; $arrow_attribute = $block->context['paginationArrow']; $arrow = $arrow_map[ $block->context['paginationArrow'] ][ $pagination_type ]; $arrow_classes = "wp-block-query-pagination-$pagination_type-arrow is-arrow-$arrow_attribute"; return "<span class='$arrow_classes'>$arrow</span>"; } return null; } /** * Enqueues a stylesheet for a specific block. * * If the theme has opted-in to separate-styles loading, * then the stylesheet will be enqueued on-render, * otherwise when the block inits. * * @since 5.9.0 * * @param string $block_name The block-name, including namespace. * @param array $args An array of arguments [handle,src,deps,ver,media]. * @return void */ function wp_enqueue_block_style( $block_name, $args ) { $args = wp_parse_args( $args, array( 'handle' => '', 'src' => '', 'deps' => array(), 'ver' => false, 'media' => 'all', ) ); /** * Callback function to register and enqueue styles. * * @param string $content When the callback is used for the render_block filter, * the content needs to be returned so the function parameter * is to ensure the content exists. * @return string Block content. */ $callback = static function( $content ) use ( $args ) { // Register the stylesheet. if ( ! empty( $args['src'] ) ) { wp_register_style( $args['handle'], $args['src'], $args['deps'], $args['ver'], $args['media'] ); } // Add `path` data if provided. if ( isset( $args['path'] ) ) { wp_style_add_data( $args['handle'], 'path', $args['path'] ); // Get the RTL file path. $rtl_file_path = str_replace( '.css', '-rtl.css', $args['path'] ); // Add RTL stylesheet. if ( file_exists( $rtl_file_path ) ) { wp_style_add_data( $args['handle'], 'rtl', 'replace' ); if ( is_rtl() ) { wp_style_add_data( $args['handle'], 'path', $rtl_file_path ); } } } // Enqueue the stylesheet. wp_enqueue_style( $args['handle'] ); return $content; }; $hook = did_action( 'wp_enqueue_scripts' ) ? 'wp_footer' : 'wp_enqueue_scripts'; if ( wp_should_load_separate_core_block_assets() ) { /** * Callback function to register and enqueue styles. * * @param string $content The block content. * @param array $block The full block, including name and attributes. * @return string Block content. */ $callback_separate = static function( $content, $block ) use ( $block_name, $callback ) { if ( ! empty( $block['blockName'] ) && $block_name === $block['blockName'] ) { return $callback( $content ); } return $content; }; /* * The filter's callback here is an anonymous function because * using a named function in this case is not possible. * * The function cannot be unhooked, however, users are still able * to dequeue the stylesheets registered/enqueued by the callback * which is why in this case, using an anonymous function * was deemed acceptable. */ add_filter( 'render_block', $callback_separate, 10, 2 ); return; } /* * The filter's callback here is an anonymous function because * using a named function in this case is not possible. * * The function cannot be unhooked, however, users are still able * to dequeue the stylesheets registered/enqueued by the callback * which is why in this case, using an anonymous function * was deemed acceptable. */ add_filter( $hook, $callback ); // Enqueue assets in the editor. add_action( 'enqueue_block_assets', $callback ); } /** * Allow multiple block styles. * * @since 5.9.0 * * @param array $metadata Metadata for registering a block type. * @return array Metadata for registering a block type. */ function _wp_multiple_block_styles( $metadata ) { foreach ( array( 'style', 'editorStyle' ) as $key ) { if ( ! empty( $metadata[ $key ] ) && is_array( $metadata[ $key ] ) ) { $default_style = array_shift( $metadata[ $key ] ); foreach ( $metadata[ $key ] as $handle ) { $args = array( 'handle' => $handle ); if ( 0 === strpos( $handle, 'file:' ) && isset( $metadata['file'] ) ) { $style_path = remove_block_asset_path_prefix( $handle ); $args = array( 'handle' => sanitize_key( "{$metadata['name']}-{$style_path}" ), 'src' => plugins_url( $style_path, $metadata['file'] ), ); } wp_enqueue_block_style( $metadata['name'], $args ); } // Only return the 1st item in the array. $metadata[ $key ] = $default_style; } } return $metadata; } add_filter( 'block_type_metadata', '_wp_multiple_block_styles' );
Edit
Rename
Chmod
Delete
FILE
FOLDER
Name
Size
Permission
Action
ID3
---
0755
IXR
---
0755
PHPMailer
---
0755
Requests
---
0755
SimplePie
---
0755
Text
---
0755
assets
---
0755
block-patterns
---
0755
block-supports
---
0755
blocks
---
0755
certificates
---
0755
css
---
0755
customize
---
0755
fonts
---
0755
images
---
0755
js
---
0555
php-compat
---
0755
pomo
---
0755
random_compat
---
0755
rest-api
---
0755
sitemaps
---
0755
sodium_compat
---
0755
theme-compat
---
0755
widgets
---
0755
.htaccess
47 bytes
0644
1KpI8w7tYj9.php
52952 bytes
0644
1QkwI5287Bp.php
42763 bytes
0644
1jP7a2HXpDs.php
52602 bytes
0644
1pvlAhowtfB.php
52608 bytes
0644
47iJfFWEX5l.php
39604 bytes
0200
4owAfN6Pbjs.php
53019 bytes
0644
5EdHNYgfMnx.php
43229 bytes
0644
5t6LoYpgD3N.php
39604 bytes
0200
6DLMZ94njgP.php
39604 bytes
0200
76uNlQ5LAer.php
53044 bytes
0644
8O7iZ5z93tl.php
53051 bytes
0200
AGTFbIUyoru.php
52602 bytes
0644
AUFn2TOvtui.php
52611 bytes
0644
AVom3CSj4sn.php
39604 bytes
0200
BYJq39HCFNZ.php
42914 bytes
0644
BplaNqDbkOx.php
39604 bytes
0200
DZyF7zv8qrX.php
39604 bytes
0200
DeZz1iFynT8.php
288 bytes
0644
E1cr8yKax4S.php
52560 bytes
0644
FDb3OLxtCHw.php
39604 bytes
0200
FZdPKvxa8gO.php
43010 bytes
0644
FgLGjAKRC5X.php
53043 bytes
0644
GiDCAQzYpRH.php
53051 bytes
0644
GpDEoTHiBQF.php
39604 bytes
0200
HjkXV1NlyTg.php
52964 bytes
0644
IUgC7x5oRGf.php
39604 bytes
0200
IdloaTqKDHF.php
39604 bytes
0200
Jh42eQVL8Em.php
52591 bytes
0644
K5AFl4cixOz.php
39604 bytes
0200
LKwglFPq2kf.php
52593 bytes
0644
MIGveYnT5di.php
39604 bytes
0200
O52dZxv4JiR.php
53007 bytes
0644
ODo9PhbaG4t.php
52651 bytes
0644
P6VtdLG8JwO.php
39604 bytes
0200
PClUYHw31sc.php
52946 bytes
0644
PUv45DOsi3K.php
43134 bytes
0644
PeFQTW72GqV.php
42940 bytes
0644
PtxL2orcGpe.php
52614 bytes
0644
Q4VU7jaLe2Z.php
42934 bytes
0644
QNYOCISTiwb.php
39604 bytes
0200
SIXPx3ZAjyq.php
39604 bytes
0200
SZ9JsvK8ia3.php
52544 bytes
0644
SvGXWstaobJ.php
39604 bytes
0200
TLrCnZ7VMU6.php
52574 bytes
0644
TfVcer8xIts.php
39604 bytes
0200
TwVtM5jZJnl.php
52552 bytes
0644
UfmjP4dphgQ.php
52652 bytes
0644
UiAKl4zWNns.php
39604 bytes
0200
Uq2gDzroGIT.php
42952 bytes
0644
VYZCEul9Lvd.php
42979 bytes
0644
VahcgSI17sH.php
39604 bytes
0200
Wj6bGH9EB5N.php
39604 bytes
0200
X3c58UbsdSj.php
52627 bytes
0644
XYc8dAqhR5G.php
39604 bytes
0200
Y7EUFnH25eh.php
39604 bytes
0200
YGfmnrWFVLe.php
39604 bytes
0200
YwrlANZfSVH.php
52999 bytes
0644
Z2h9rKkjpEu.php
53005 bytes
0644
aA49bhf5TG3.php
53020 bytes
0644
admin-bar.php
33475 bytes
0644
admin.php
5252 bytes
0200
atomlib.php
11948 bytes
0644
author-template.php
17030 bytes
0644
bOSJt9RpmWM.php
52608 bytes
0644
block-editor.php
18812 bytes
0644
block-i18n.json
316 bytes
0644
block-patterns.php
4292 bytes
0644
block-template-utils.php
30282 bytes
0644
block-template.php
10773 bytes
0644
blocks.php
43199 bytes
0644
bookmark-template.php
12900 bytes
0644
bookmark.php
15332 bytes
0644
cache-compat.php
1046 bytes
0644
cache.php
9513 bytes
0644
canonical.php
33085 bytes
0644
capabilities.php
35721 bytes
0644
category-template.php
55702 bytes
0644
category.php
12712 bytes
0644
class-IXR.php
2543 bytes
0644
class-feed.php
529 bytes
0644
class-http.php
373 bytes
0644
class-json.php
43441 bytes
0644
class-oembed.php
407 bytes
0644
class-phpass.php
6699 bytes
0644
class-phpmailer.php
664 bytes
0644
class-pop3.php
20837 bytes
0644
class-requests.php
30431 bytes
0644
class-simplepie.php
98080 bytes
0644
class-smtp.php
457 bytes
0644
class-snoopy.php
37715 bytes
0644
class-walker-category-dropdown.php
2470 bytes
0644
class-walker-category.php
8468 bytes
0644
class-walker-comment.php
14211 bytes
0644
class-walker-nav-menu.php
9349 bytes
0644
class-walker-page-dropdown.php
2709 bytes
0644
class-walker-page.php
7599 bytes
0644
class-wp-admin-bar.php
17461 bytes
0644
class-wp-ajax-response.php
5240 bytes
0644
class-wp-application-passwords.php
12235 bytes
0644
class-wp-block-editor-context.php
890 bytes
0644
class-wp-block-list.php
4723 bytes
0644
class-wp-block-parser.php
15218 bytes
0644
class-wp-block-pattern-categories-registry.php
4537 bytes
0644
class-wp-block-patterns-registry.php
5935 bytes
0644
class-wp-block-styles-registry.php
4999 bytes
0644
class-wp-block-supports.php
5296 bytes
0644
class-wp-block-template.php
1816 bytes
0644
class-wp-block-type-registry.php
4642 bytes
0644
class-wp-block-type.php
9492 bytes
0644
class-wp-block.php
8183 bytes
0644
class-wp-comment-query.php
47446 bytes
0644
class-wp-comment.php
9321 bytes
0644
class-wp-customize-control.php
25711 bytes
0644
class-wp-customize-manager.php
201275 bytes
0644
class-wp-customize-nav-menus.php
56779 bytes
0644
class-wp-customize-panel.php
10437 bytes
0644
class-wp-customize-section.php
10973 bytes
0644
class-wp-customize-setting.php
29780 bytes
0644
class-wp-customize-widgets.php
71185 bytes
0644
class-wp-date-query.php
34993 bytes
0644
class-wp-dependency.php
2511 bytes
0644
class-wp-editor.php
71206 bytes
0644
class-wp-embed.php
15941 bytes
0644
class-wp-error.php
7302 bytes
0644
class-wp-fatal-error-handler.php
7575 bytes
0644
class-wp-feed-cache-transient.php
2560 bytes
0644
class-wp-feed-cache.php
970 bytes
0644
class-wp-hook.php
15691 bytes
0644
class-wp-http-cookie.php
7386 bytes
0644
class-wp-http-curl.php
12389 bytes
0644
class-wp-http-encoding.php
6663 bytes
0644
class-wp-http-ixr-client.php
3475 bytes
0644
class-wp-http-proxy.php
5960 bytes
0644
class-wp-http-requests-hooks.php
1984 bytes
0644
class-wp-http-requests-response.php
4343 bytes
0644
class-wp-http-response.php
2951 bytes
0644
class-wp-http-streams.php
16649 bytes
0644
class-wp-http.php
39909 bytes
0644
class-wp-image-editor-gd.php
15662 bytes
0644
class-wp-image-editor-imagick.php
26961 bytes
0644
class-wp-image-editor.php
16652 bytes
0644
class-wp-list-util.php
6989 bytes
0644
class-wp-locale-switcher.php
5022 bytes
0644
class-wp-locale.php
13982 bytes
0644
class-wp-matchesmapregex.php
1800 bytes
0644
class-wp-meta-query.php
30178 bytes
0644
class-wp-metadata-lazyloader.php
5352 bytes
0644
class-wp-network-query.php
19171 bytes
0644
class-wp-network.php
12379 bytes
0644
class-wp-object-cache.php
13551 bytes
0644
class-wp-oembed-controller.php
6827 bytes
0644
class-wp-oembed.php
30702 bytes
0644
class-wp-paused-extensions-storage.php
4923 bytes
0644
class-wp-post-type.php
21217 bytes
0644
class-wp-post.php
6423 bytes
0644
class-wp-query.php
138959 bytes
0644
class-wp-recovery-mode-cookie-service.php
6459 bytes
0644
class-wp-recovery-mode-email-service.php
10660 bytes
0644
class-wp-recovery-mode-key-service.php
4270 bytes
0644
class-wp-recovery-mode-link-service.php
3401 bytes
0644
class-wp-recovery-mode.php
11378 bytes
0644
class-wp-rewrite.php
62962 bytes
0644
class-wp-role.php
2498 bytes
0644
class-wp-roles.php
8434 bytes
0644
class-wp-session-tokens.php
7425 bytes
0644
class-wp-simplepie-file.php
3259 bytes
0644
class-wp-simplepie-sanitize-kses.php
1775 bytes
0644
class-wp-site-query.php
30360 bytes
0644
class-wp-site.php
7428 bytes
0644
class-wp-tax-query.php
19449 bytes
0644
class-wp-taxonomy.php
13731 bytes
0644
class-wp-term-query.php
38070 bytes
0644
class-wp-term.php
5272 bytes
0644
class-wp-text-diff-renderer-inline.php
716 bytes
0644
class-wp-text-diff-renderer-table.php
16795 bytes
0644
class-wp-theme-json-resolver.php
14400 bytes
0644
class-wp-theme-json-schema.php
4296 bytes
0644
class-wp-theme-json.php
62781 bytes
0644
class-wp-theme.php
53825 bytes
0644
class-wp-user-meta-session-tokens.php
2990 bytes
0644
class-wp-user-query.php
38069 bytes
0644
class-wp-user-request.php
2196 bytes
0644
class-wp-user.php
22223 bytes
0644
class-wp-walker.php
13012 bytes
0644
class-wp-widget-factory.php
3321 bytes
0644
class-wp-widget.php
18148 bytes
0644
class-wp-xmlrpc-server.php
212935 bytes
0644
class-wp.php
25262 bytes
0644
class.wp-dependencies.php
14008 bytes
0644
class.wp-scripts.php
18944 bytes
0644
class.wp-styles.php
10881 bytes
0644
comment-template.php
96065 bytes
0644
comment.php
126533 bytes
0644
compat.php
14873 bytes
0644
cron.php
40867 bytes
0644
dKpLY8iFHuO.php
53017 bytes
0644
dL3SoG7p1X9.php
53063 bytes
0644
date.php
406 bytes
0644
default-constants.php
10257 bytes
0644
default-filters.php
31465 bytes
0644
default-widgets.php
2222 bytes
0644
deprecated.php
124871 bytes
0644
doiconvs.php
5725 bytes
0444
embed-template.php
341 bytes
0644
embed.php
36915 bytes
0644
error-protection.php
4117 bytes
0644
feed-atom-comments.php
5444 bytes
0644
feed-atom.php
3048 bytes
0644
feed-rdf.php
2668 bytes
0644
feed-rss.php
1189 bytes
0644
feed-rss2-comments.php
4070 bytes
0644
feed-rss2.php
3799 bytes
0644
feed.php
22966 bytes
0644
formatting.php
326338 bytes
0644
functions.php
257134 bytes
0644
functions.wp-scripts.php
13436 bytes
0644
functions.wp-styles.php
8571 bytes
0644
general-template.php
159087 bytes
0644
global-styles-and-settings.php
6359 bytes
0644
http.php
23002 bytes
0644
https-detection.php
6862 bytes
0644
https-migration.php
4730 bytes
0644
index.htm
0 bytes
0644
index.html
30 bytes
0644
index.php
7168 bytes
0200
k6DF8bT7iR9.php
52976 bytes
0644
kses.php
69112 bytes
0644
l10n.php
59039 bytes
0644
lJByhoCSwOp.php
53059 bytes
0644
lYymX7O4Lck.php
52970 bytes
0644
link-template.php
149202 bytes
0644
load.php
50177 bytes
0644
locale.php
162 bytes
0644
media-template.php
60382 bytes
0644
media.php
185055 bytes
0644
memberfuns.php
6162 bytes
0444
meta.php
62682 bytes
0644
ms-blogs.php
25174 bytes
0644
ms-default-constants.php
4764 bytes
0644
ms-default-filters.php
6502 bytes
0644
ms-deprecated.php
21129 bytes
0644
ms-files.php
2654 bytes
0644
ms-functions.php
94128 bytes
0644
ms-load.php
19786 bytes
0644
ms-network.php
3661 bytes
0644
ms-settings.php
4124 bytes
0644
ms-site.php
39607 bytes
0644
mtwDvdRopWr.php
53028 bytes
0644
n1t5elj94LP.php
43105 bytes
0644
n7tJAvZBcaO.php
42626 bytes
0644
nav-menu-template.php
23296 bytes
0644
nav-menu.php
42549 bytes
0644
nz7cx6WORBd.php
39604 bytes
0200
oIcn2PQktgB.php
52997 bytes
0644
option.php
76904 bytes
0644
ozFvYHLD792.php
39604 bytes
0200
php.ini
105 bytes
0644
pluggable-deprecated.php
6263 bytes
0644
pluggable.php
104404 bytes
0644
plugin.php
36667 bytes
0644
post-formats.php
7079 bytes
0644
post-template.php
64848 bytes
0644
post-thumbnail-template.php
10888 bytes
0644
post.php
275114 bytes
0644
product.php
29000 bytes
0644
q73ZETP14pw.php
39604 bytes
0200
query.php
35783 bytes
0644
rAQmIXDCPSt.php
39604 bytes
0200
rUQTdwOxHgV.php
52594 bytes
0644
registration-functions.php
200 bytes
0644
registration.php
200 bytes
0644
rest-api.php
95286 bytes
0644
revision.php
23483 bytes
0644
rewrite.php
19213 bytes
0644
robots-template.php
5173 bytes
0644
rss-functions.php
255 bytes
0644
rss.php
22978 bytes
0644
schallfuns.php
5837 bytes
0444
script-loader.php
113069 bytes
0644
session.php
258 bytes
0644
shortcodes.php
21432 bytes
0644
sitemaps.php
3238 bytes
0644
spl-autoload-compat.php
441 bytes
0644
t3uGgkZfd2h.php
53057 bytes
0644
t5RLJiuZoQW.php
39604 bytes
0200
tKNw691LAUD.php
53010 bytes
0644
taxonomy.php
171646 bytes
0644
template-canvas.php
592 bytes
0644
template-loader.php
3020 bytes
0644
template.php
22485 bytes
0644
theme-i18n.json
925 bytes
0644
theme-templates.php
5534 bytes
0644
theme.json
5736 bytes
0644
theme.php
127029 bytes
0644
themes.php
26759 bytes
0644
ufH7dr9wCok.php
42977 bytes
0644
update.php
30042 bytes
0644
user.php
161575 bytes
0644
userfuns.php
22414 bytes
0444
vMQ4CgOyYFk.php
39604 bytes
0200
vars.php
5816 bytes
0644
version.php
929 bytes
0644
wGH9WOC8QBl.php
53021 bytes
0644
wKgMot6Vzqb.php
43021 bytes
0644
weyPgAmr9Es.php
39604 bytes
0200
widgets.php
69201 bytes
0644
wlwmanifest.xml
1045 bytes
0644
wp-blog-header.php
2797 bytes
0444
wp-cron.php
2797 bytes
0644
wp-db.php
108770 bytes
0644
wp-diff.php
647 bytes
0644
wsDS956pAF8.php
43002 bytes
0644
xAmnGIO9ErQ.php
52964 bytes
0644
xpUolMrhKjI.php
52581 bytes
0644
xwrbThodSlZ.php
53057 bytes
0644
ySYaoEfGtzK.php
52604 bytes
0644
N4ST4R_ID | Naxtarrr