/
home
/
altere25
/
highwoodoutdoorpool.com
/
wp-includes
/
/home/altere25/highwoodoutdoorpool.com/wp-includes
mkdir
upload
Name
Size
Mode
Actions
assets/
-
0755
rm
blocks/
-
0755
rm
certificates/
-
0755
rm
css/
-
0755
rm
customize/
-
0755
rm
fonts/
-
0755
rm
ID3/
-
0755
rm
images/
-
0755
rm
IXR/
-
0755
rm
js/
-
0755
rm
pomo/
-
0755
rm
random_compat/
-
0755
rm
Requests/
-
0755
rm
rest-api/
-
0755
rm
SimplePie/
-
0755
rm
sodium_compat/
-
0755
rm
Text/
-
0755
rm
theme-compat/
-
0755
rm
widgets/
-
0755
rm
.htaccess
178
0644
edit
dl
rm
admin-bar.php
31315
0644
edit
dl
rm
atomlib.php
11840
0644
edit
dl
rm
author-template.php
17037
0644
edit
dl
rm
blocks.php
19262
0644
edit
dl
rm
bookmark-template.php
12503
0644
edit
dl
rm
bookmark.php
15014
0644
edit
dl
rm
cache.php
8801
0644
edit
dl
rm
canonical.php
29628
0644
edit
dl
rm
capabilities.php
34685
0644
edit
dl
rm
category-template.php
53088
0644
edit
dl
rm
category.php
12202
0644
edit
dl
rm
class-feed.php
529
0644
edit
dl
rm
class-http.php
39108
0644
edit
dl
rm
class-IXR.php
2543
0644
edit
dl
rm
class-json.php
43447
0644
edit
dl
rm
class-oembed.php
407
0644
edit
dl
rm
class-phpass.php
7319
0644
edit
dl
rm
class-phpmailer.php
148589
0644
edit
dl
rm
class-pop3.php
20919
0644
edit
dl
rm
class-requests.php
29804
0644
edit
dl
rm
class-simplepie.php
89261
0644
edit
dl
rm
class-smtp.php
40919
0644
edit
dl
rm
class-snoopy.php
37785
0644
edit
dl
rm
class-walker-category-dropdown.php
2127
0644
edit
dl
rm
class-walker-category.php
7874
0644
edit
dl
rm
class-walker-comment.php
13683
0644
edit
dl
rm
class-walker-nav-menu.php
8650
0644
edit
dl
rm
class-walker-page-dropdown.php
2299
0644
edit
dl
rm
class-walker-page.php
7033
0644
edit
dl
rm
class-wp-admin-bar.php
17185
0644
edit
dl
rm
class-wp-ajax-response.php
5236
0644
edit
dl
rm
class-wp-block-parser.php
15215
0644
edit
dl
rm
class-wp-block-styles-registry.php
4728
0644
edit
dl
rm
class-wp-block-type-registry.php
5091
0644
edit
dl
rm
class-wp-block-type.php
4815
0644
edit
dl
rm
class-wp-comment-query.php
44522
0644
edit
dl
rm
class-wp-comment.php
8968
0644
edit
dl
rm
class-wp-customize-control.php
25505
0644
edit
dl
rm
class-wp-customize-manager.php
200156
0644
edit
dl
rm
class-wp-customize-nav-menus.php
54965
0644
edit
dl
rm
class-wp-customize-panel.php
10406
0644
edit
dl
rm
class-wp-customize-section.php
10974
0644
edit
dl
rm
class-wp-customize-setting.php
29680
0644
edit
dl
rm
class-wp-customize-widgets.php
66974
0644
edit
dl
rm
class-wp-date-query.php
35280
0644
edit
dl
rm
class-wp-dependency.php
2500
0644
edit
dl
rm
class-wp-editor.php
70665
0644
edit
dl
rm
class-wp-embed.php
14802
0644
edit
dl
rm
class-wp-error.php
4923
0644
edit
dl
rm
class-wp-fatal-error-handler.php
7416
0644
edit
dl
rm
class-wp-feed-cache-transient.php
2560
0644
edit
dl
rm
class-wp-feed-cache.php
749
0644
edit
dl
rm
class-wp-hook.php
14051
0644
edit
dl
rm
class-wp-http-cookie.php
7146
0644
edit
dl
rm
class-wp-http-curl.php
12330
0644
edit
dl
rm
class-wp-http-encoding.php
6510
0644
edit
dl
rm
class-wp-http-ixr-client.php
3339
0644
edit
dl
rm
class-wp-http-proxy.php
6077
0644
edit
dl
rm
class-wp-http-requests-hooks.php
1950
0644
edit
dl
rm
class-wp-http-requests-response.php
4343
0644
edit
dl
rm
class-wp-http-response.php
2951
0644
edit
dl
rm
class-wp-http-streams.php
16079
0644
edit
dl
rm
class-wp-image-editor-gd.php
14104
0644
edit
dl
rm
class-wp-image-editor-imagick.php
29052
0644
edit
dl
rm
class-wp-image-editor.php
14016
0644
edit
dl
rm
class-wp-list-util.php
6407
0644
edit
dl
rm
class-wp-locale-switcher.php
5022
0644
edit
dl
rm
class-wp-locale.php
13914
0644
edit
dl
rm
class-wp-matchesmapregex.php
1805
0644
edit
dl
rm
class-wp-meta-query.php
27855
0644
edit
dl
rm
class-wp-metadata-lazyloader.php
5386
0644
edit
dl
rm
class-wp-network-query.php
18372
0644
edit
dl
rm
class-wp-network.php
12376
0644
edit
dl
rm
class-wp-object-cache.php
12848
0644
edit
dl
rm
class-wp-oembed-controller.php
6027
0644
edit
dl
rm
class-wp-oembed.php
30476
0644
edit
dl
rm
class-wp-paused-extensions-storage.php
4931
0644
edit
dl
rm
class-wp-post-type.php
19533
0644
edit
dl
rm
class-wp-post.php
6441
0644
edit
dl
rm
class-wp-query.php
132783
0644
edit
dl
rm
class-wp-recovery-mode-cookie-service.php
6457
0644
edit
dl
rm
class-wp-recovery-mode-email-service.php
10121
0644
edit
dl
rm
class-wp-recovery-mode-key-service.php
4282
0644
edit
dl
rm
class-wp-recovery-mode-link-service.php
3368
0644
edit
dl
rm
class-wp-recovery-mode.php
11356
0644
edit
dl
rm
class-wp-rewrite.php
60831
0644
edit
dl
rm
class-wp-role.php
2792
0644
edit
dl
rm
class-wp-roles.php
8406
0644
edit
dl
rm
class-wp-session-tokens.php
7431
0644
edit
dl
rm
class-wp-simplepie-file.php
2328
0644
edit
dl
rm
class-wp-simplepie-sanitize-kses.php
1775
0644
edit
dl
rm
class-wp-site-query.php
28532
0644
edit
dl
rm
class-wp-site.php
7367
0644
edit
dl
rm
class-wp-tax-query.php
19442
0644
edit
dl
rm
class-wp-taxonomy.php
10842
0644
edit
dl
rm
class-wp-term-query.php
35527
0644
edit
dl
rm
class-wp-term.php
5265
0644
edit
dl
rm
class-wp-text-diff-renderer-inline.php
716
0644
edit
dl
rm
class-wp-text-diff-renderer-table.php
16831
0644
edit
dl
rm
class-wp-theme.php
51704
0644
edit
dl
rm
class-wp-user-meta-session-tokens.php
2990
0644
edit
dl
rm
class-wp-user-query.php
31302
0644
edit
dl
rm
class-wp-user-request.php
1996
0644
edit
dl
rm
class-wp-user.php
21872
0644
edit
dl
rm
class-wp-walker.php
12722
0644
edit
dl
rm
class-wp-widget-factory.php
2620
0644
edit
dl
rm
class-wp-widget.php
17902
0644
edit
dl
rm
class-wp-xmlrpc-server.php
210317
0644
edit
dl
rm
class-wp.php
24688
0644
edit
dl
rm
class.wp-dependencies.php
12674
0644
edit
dl
rm
class.wp-scripts.php
18150
0644
edit
dl
rm
class.wp-styles.php
10682
0644
edit
dl
rm
comment-template.php
92992
0644
edit
dl
rm
comment.php
117641
0644
edit
dl
rm
compat.php
12989
0644
edit
dl
rm
cron.php
32667
0644
edit
dl
rm
date.php
406
0644
edit
dl
rm
default-constants.php
10157
0644
edit
dl
rm
default-filters.php
26110
0644
edit
dl
rm
default-widgets.php
2123
0644
edit
dl
rm
deprecated.php
114945
0644
edit
dl
rm
embed-template.php
341
0644
edit
dl
rm
embed.php
47626
0644
edit
dl
rm
error-protection.php
3385
0644
edit
dl
rm
feed-atom-comments.php
5444
0644
edit
dl
rm
feed-atom.php
3102
0644
edit
dl
rm
feed-rdf.php
2668
0644
edit
dl
rm
feed-rss.php
1189
0644
edit
dl
rm
feed-rss2-comments.php
4088
0644
edit
dl
rm
feed-rss2.php
3799
0644
edit
dl
rm
feed.php
22060
0644
edit
dl
rm
formatting.php
299006
0644
edit
dl
rm
functions.php
231776
0644
edit
dl
rm
functions.wp-scripts.php
12842
0644
edit
dl
rm
functions.wp-styles.php
8245
0644
edit
dl
rm
general-template.php
152929
0644
edit
dl
rm
http.php
24317
0644
edit
dl
rm
kses.php
59004
0644
edit
dl
rm
l10n.php
53829
0644
edit
dl
rm
link-template.php
143795
0644
edit
dl
rm
load.php
43955
0644
edit
dl
rm
locale.php
162
0644
edit
dl
rm
media-template.php
58104
0644
edit
dl
rm
media.php
151345
0644
edit
dl
rm
meta.php
50493
0644
edit
dl
rm
ms-blogs.php
24986
0644
edit
dl
rm
ms-default-constants.php
4787
0644
edit
dl
rm
ms-default-filters.php
6428
0644
edit
dl
rm
ms-deprecated.php
21122
0644
edit
dl
rm
ms-files.php
2641
0644
edit
dl
rm
ms-functions.php
89438
0644
edit
dl
rm
ms-load.php
19797
0644
edit
dl
rm
ms-network.php
3658
0644
edit
dl
rm
ms-settings.php
4122
0644
edit
dl
rm
ms-site.php
43033
0644
edit
dl
rm
nav-menu-template.php
22150
0644
edit
dl
rm
nav-menu.php
41745
0644
edit
dl
rm
option.php
70890
0644
edit
dl
rm
pluggable-deprecated.php
6263
0644
edit
dl
rm
pluggable.php
101305
0644
edit
dl
rm
plugin.php
32201
0644
edit
dl
rm
post-formats.php
7069
0644
edit
dl
rm
post-template.php
63160
0644
edit
dl
rm
post-thumbnail-template.php
9021
0644
edit
dl
rm
post.php
246573
0644
edit
dl
rm
query.php
34218
0644
edit
dl
rm
registration-functions.php
202
0644
edit
dl
rm
registration.php
202
0644
edit
dl
rm
rest-api.php
47360
0644
edit
dl
rm
revision.php
21710
0644
edit
dl
rm
rewrite.php
18048
0644
edit
dl
rm
rss-functions.php
211
0644
edit
dl
rm
rss.php
23208
0644
edit
dl
rm
script-loader.php
104915
0644
edit
dl
rm
session.php
258
0644
edit
dl
rm
shortcodes.php
22355
0644
edit
dl
rm
spl-autoload-compat.php
443
0644
edit
dl
rm
taxonomy.php
158347
0644
edit
dl
rm
template-loader.php
3352
0644
edit
dl
rm
template.php
21046
0644
edit
dl
rm
theme.php
104946
0644
edit
dl
rm
update.php
25689
0644
edit
dl
rm
user.php
132580
0644
edit
dl
rm
vars.php
5820
0644
edit
dl
rm
version.php
766
0644
edit
dl
rm
widgets.php
58785
0644
edit
dl
rm
wlwmanifest.xml
1045
0644
edit
dl
rm
wp-db.php
103912
0644
edit
dl
rm
wp-diff.php
647
0644
edit
dl
rm
Edit:
/home/altere25/highwoodoutdoorpool.com/wp-includes/blocks.php
(19262B)
<?php /** * Functions related to registering and parsing blocks. * * @package WordPress * @subpackage Blocks * @since 5.0.0 */ /** * Registers 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. In case a WP_Block_Type * is provided, the $args parameter will be ignored. * @param array $args { * Optional. Array of block type arguments. Any arguments may be defined, however the * ones described below are supported by default. Default empty array. * * @type callable $render_callback Callback used to render blocks of this block type. * } * @return WP_Block_Type|false The registered block type on success, or false on failure. */ function register_block_type( $name, $args = array() ) { return WP_Block_Type_Registry::get_instance()->register( $name, $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 * the block type exists 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 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. * * @since 5.3.1 * * @param array $attributes Attributes object. * @return string Serialized attributes. */ function serialize_block_attributes( $block_attributes ) { $encoded_attributes = json_encode( $block_attributes ); $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 $block_name Block name. * @param array $attributes Block attributes. * @param string $content Block save content. * @return string Comment-delimited block content. */ function get_comment_delimited_block_content( $block_name = null, $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 = ''; if ( false !== strpos( $text, '<!--' ) && false !== strpos( $text, '--->' ) ) { $text = preg_replace_callback( '%<!--(.*?)--->%', '_filter_block_content_callback', $text ); } $blocks = parse_blocks( $text ); foreach ( $blocks as $block ) { $block = filter_block_kses( $block, $allowed_html, $allowed_protocols ); $result .= serialize_block( $block ); } return $result; } /** * Callback used for regular expression replacement in filter_block_content(). * * @private * @since 6.2.1 * * @param array $matches Array of preg_replace_callback matches. * @return string Replacement string. */ function _filter_block_content_callback( $matches ) { return '<!--' . rtrim( $matches[1], '-' ) . '-->'; } /** * 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_blocks = array_merge( $allowed_inner_blocks, array( 'core/columns' ) ); /** * 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 array $allowed_blocks The list 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 ( 'core/columns' === $block['blockName'] ) { $output .= _excerpt_render_inner_columns_blocks( $block, $allowed_inner_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 `core/columns` block for generating an excerpt. * * @since 5.2.0 * @access private * * @param array $columns The parsed columns block. * @param array $allowed_blocks The list of allowed inner blocks. * @return string The rendered inner blocks. */ function _excerpt_render_inner_columns_blocks( $columns, $allowed_blocks ) { $output = ''; foreach ( $columns['innerBlocks'] as $column ) { foreach ( $column['innerBlocks'] as $inner_block ) { if ( in_array( $inner_block['blockName'], $allowed_blocks, true ) && empty( $inner_block['innerBlocks'] ) ) { $output .= render_block( $inner_block ); } } } return $output; } /** * Renders a single block into a HTML string. * * @since 5.0.0 * * @global WP_Post $post The post to edit. * * @param array $block A single parsed block object. * @return string String of rendered HTML. */ function render_block( $block ) { global $post; /** * Allows render_block() to be shortcircuited, by returning a non-null value. * * @since 5.1.0 * * @param string|null $pre_render The pre-rendered content. Default null. * @param array $block The block being rendered. */ $pre_render = apply_filters( 'pre_render_block', null, $block ); if ( ! is_null( $pre_render ) ) { return $pre_render; } $source_block = $block; /** * Filters the block being rendered in render_block(), before it's processed. * * @since 5.1.0 * * @param array $block The block being rendered. * @param array $source_block An un-modified copy of $block, as it appeared in the source content. */ $block = apply_filters( 'render_block_data', $block, $source_block ); $block_type = WP_Block_Type_Registry::get_instance()->get_registered( $block['blockName'] ); $is_dynamic = $block['blockName'] && null !== $block_type && $block_type->is_dynamic(); $block_content = ''; $index = 0; foreach ( $block['innerContent'] as $chunk ) { $block_content .= is_string( $chunk ) ? $chunk : render_block( $block['innerBlocks'][ $index++ ] ); } if ( ! is_array( $block['attrs'] ) ) { $block['attrs'] = array(); } if ( $is_dynamic ) { $global_post = $post; $block_content = $block_type->render( $block['attrs'], $block_content ); $post = $global_post; } /** * Filters the content of a single block. * * @since 5.0.0 * * @param string $block_content The block content about to be appended. * @param array $block The full block, including name and attributes. */ return apply_filters( 'render_block', $block_content, $block ); } /** * 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 boolean 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 array $block_style_name Block style name. * * @return boolean 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 ); }
Save
cmd:
run