setup_properties(); add_action( 'init', array( $this, 'run' ) ); } /** * Run the class functionality. * * @return void */ public function run() { $this->register_categories(); $this->register_patterns(); } /** * Setup class properties. * * @return void */ private function setup_properties() { $categories = array( 'books-library' => array( 'label' => __( 'Books Library Patterns', 'books-library' ) ), ); $patterns = array( 'header-default', 'banner', 'product-section', '404-page', 'primary-sidebar', 'search', 'footer-default' ); $this->categories = apply_filters( 'books_library_block_patterns_categories', $categories ); $this->patterns = apply_filters( 'books_library_block_patterns', $patterns ); } /** * Register block patterns categories. * * @return void */ private function register_categories() { foreach ( $this->categories as $slug => $args ) { if ( WP_Block_Pattern_Categories_Registry::get_instance()->is_registered( $slug ) ) { continue; } register_block_pattern_category( $slug, $args ); } } /** * Register Patterns. * * @return void */ private function register_patterns() { foreach ( $this->patterns as $pattern ) { $file = get_theme_file_path( '/patterns/' . $pattern . '.php' ); if ( ! is_file( $file ) ) { continue; } register_block_pattern( 'books-library/' . $pattern, require $file ); } } } new Block_Patterns();