--- 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 );
+ }
+ }
+}