diff -r 34716fd837a4 -r be944660c56a wp/wp-includes/block-patterns.php --- a/wp/wp-includes/block-patterns.php Tue Dec 15 15:52:01 2020 +0100 +++ b/wp/wp-includes/block-patterns.php Wed Sep 21 18:19:35 2022 +0200 @@ -19,16 +19,13 @@ if ( $should_register_core_patterns ) { $core_block_patterns = array( - 'text-two-columns', - 'two-buttons', - 'two-images', - 'text-two-columns-with-images', - 'text-three-columns-buttons', - 'large-header', - 'large-header-button', - 'three-buttons', - 'heading-paragraph', - 'quote', + 'query-standard-posts', + 'query-medium-posts', + 'query-small-posts', + 'query-grid-posts', + 'query-large-title-posts', + 'query-offset-posts', + 'social-links-shared-background-color', ); foreach ( $core_block_patterns as $core_block_pattern ) { @@ -44,4 +41,45 @@ register_block_pattern_category( 'gallery', array( 'label' => _x( 'Gallery', 'Block pattern category' ) ) ); register_block_pattern_category( 'header', array( 'label' => _x( 'Headers', 'Block pattern category' ) ) ); register_block_pattern_category( 'text', array( 'label' => _x( 'Text', 'Block pattern category' ) ) ); + register_block_pattern_category( 'query', array( 'label' => _x( 'Query', 'Block pattern category' ) ) ); } + +/** + * Register Core's official patterns from wordpress.org/patterns. + * + * @since 5.8.0 + * + * @param WP_Screen $current_screen The screen that the current request was triggered from. + */ +function _load_remote_block_patterns( $current_screen ) { + if ( ! $current_screen->is_block_editor ) { + return; + } + + $supports_core_patterns = get_theme_support( 'core-block-patterns' ); + + /** + * Filter to disable remote block patterns. + * + * @since 5.8.0 + * + * @param bool $should_load_remote + */ + $should_load_remote = apply_filters( 'should_load_remote_block_patterns', true ); + + if ( $supports_core_patterns && $should_load_remote ) { + $request = new WP_REST_Request( 'GET', '/wp/v2/pattern-directory/patterns' ); + $core_keyword_id = 11; // 11 is the ID for "core". + $request->set_param( 'keyword', $core_keyword_id ); + $response = rest_do_request( $request ); + if ( $response->is_error() ) { + return; + } + $patterns = $response->get_data(); + + foreach ( $patterns as $settings ) { + $pattern_name = 'core/' . sanitize_title( $settings['title'] ); + register_block_pattern( $pattern_name, (array) $settings ); + } + } +}