wp/wp-includes/block-patterns.php
changeset 18 be944660c56a
parent 16 a86126ab1dd4
child 19 3d72ae0968f4
--- 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 );
+		}
+	}
+}