Support

Account

Home Forums General Issues How to register multiple ACF Gutenberg Blocks?

Solving

How to register multiple ACF Gutenberg Blocks?

    • Rode

    • January 21, 2020 at 12:55 am

    Hello.
    What is the best way to register multiple ACF blocks?
    – Can anyone post some examples?

    • Rode

    • January 21, 2020 at 1:04 am

    Is this the correct way:

    function register_acf_block_types() {
    
        // register a Post-Grid block.
        acf_register_block_type(array(
            'name'              => 'post-grid',
            'title'             => __('Post-Grid'),
            'description'       => __('A custom Post-Grid block.'),
            'render_template'   => 'blocks/post-grid/block-post-grid.php',
            'category'          => 'common',
            'icon'              => 'grid-view',
            'keywords'          => array( 'post-grid', 'grid', 'post', 'posts' ),
    	));
    	
    	// register a Post-List block.
    	acf_register_block_type(array(
    		'name'              => 'post-list',
    		'title'             => __('Post-List'),
    		'description'       => __('A custom Post-List block.'),
    		'render_template'   => 'blocks/post-list/block-post-list.php',
    		'category'          => 'common',
    		'icon'              => 'list-view',
    		'keywords'          => array( 'post-list', 'list', 'post', 'posts' ),
    	));
    }
    
    // Check if function exists and hook into setup.
    if( function_exists('acf_register_block_type') ) {
        add_action('acf/init', 'register_acf_block_types');
    }
  • It’s working perfectly for me. Have you tested this?

  • 
    function register_acf_block_types() {
    	
    	// register a Carousel block
    	acf_register_block_type(array(
    		'name'				    => 'carousel',
    		'title'			 	    => __('Carousel'),
    		'description'		  => __('Show images in a carousel'),
    		'render_template'	=> 'blocks/carousel.php',
    		'category'			  => 'common',
    		'icon'				    => 'slides',
    		'keywords'			  => array( 'carousel', 'gallery' ),
        'mode'            => 'edit'
    	));
    	
    	// register a Card block
    	acf_register_block_type(array(
    		'name'				    => 'card',
    		'title'			 	    => __('Card'),
    		'description'		  => __('Card with photo and info'),
    		'render_template'	=> 'blocks/card.php',
    		'category'			  => 'common',
    		'icon'				    => 'id',
    		'keywords'			  => array( 'card', 'team' ),
        'mode'            => 'edit'
    	));
    }
    
    // Check if function exists and hook into setup.
    if( function_exists('acf_register_block_type') ) {
      add_action('acf/init', 'register_acf_block_types');
    }
    

    I tried the same thing. When I add the Carousel in the editor I get just the Carousel, but when I try to add the Card, it shows the Carousel and the Card in the same block which I don’t want.

    Anyone else having this problem? What am I missing?

  • This is an alternative, it does the same thing as the other version I posted but when I create a Card block, I’m still getting the Carousel block appearing below the Card block in the editor, they appear together as if they were all one block

    However, if I add the Carousel block, it is just the Carousel which is expected. I have scoured the Internet and have yet to find out how to create multiple ACF blocks.

    Seems like you’d just register a new block and it should work but I’m having issues when adding the Card block and it including the Carousel block along with it.

    
    add_action('acf/init', 'my_acf_blocks_init');
    function my_acf_blocks_init() {
    
      // Check function exists.
      if( function_exists('acf_register_block_type') ) {
    
      	// register a Carousel block
      	acf_register_block_type(array(
      		'name'				    => 'carousel',
      		'title'			 	    => __('Carousel'),
      		'description'		  => __('Show images in a carousel'),
      		'render_template'	=> 'blocks/carousel.php',
      		'category'			  => 'common',
      		'icon'				    => 'slides',
      		'keywords'			  => array( 'carousel', 'gallery' ),
          'mode'            => 'edit'
      	));
      	
      	// register a Card block
      	acf_register_block_type(array(
      		'name'				    => 'card',
      		'title'			 	    => __('Card'),
      		'description'		  => __('Card with photo and info'),
      		'render_template'	=> 'blocks/card.php',
      		'category'			  => 'common',
      		'icon'				    => 'id',
      		'keywords'			  => array( 'card', 'team' ),
          'mode'            => 'edit'
      	));
      }
    }
    
  • Ok, this is a little embarrassing but I found the issue. The carousel block settings in Advanced Custom Fields was set to “Show this Field Group if > Block > Is equal to > ALL” and that was the cause. I didn’t notice it before because that was the first block I created so it looks like after I created the other ones that one got set to “ALL” by default without me realizing it.

  • Apologies if this comes as duplicate posts. I have posted twice but did not go through.

    I got a white editor page after I added the second register block. I got the editor back when I removed it and I am not sure what’s wrong as written. I will appreciate some help.

    function register_acf_block_types() {
    
       // register a testimonial block.
       acf_register_block_type(array(
          'name'              => 'testimonial',
          'title'             => __('Testimonial'),
          'description'       => __('A custom testimonial block.'),
          'render_template'   => 'template-parts/blocks/testimonial/testimonial.php',
          'category'          => 'formatting',
          'icon'              => 'admin-comments',
          'keywords'          => array( 'testimonial', 'quote' ),
       ));
    	
    	// register a testimonial block.
       acf_register_block_type(array(
          'name'              => 'landing_page_content',
          'title'             => __('Landing Page'),
          'description'       => __('A custom landing page block.'),
          'render_template'   => 'template-parts/blocks/landing/page_landing.php',
          'category'          => 'formatting',
          'icon'              => 'dashicons-format-aside',
          'keywords'          => array( 'landing', 'card' ),
       ));
    }
    
    // Check if function exists and hook into setup.
    if( function_exists('acf_register_block_type') ) {
      add_action('acf/init', 'register_acf_block_types');
    }
  • It’s working for me good, i don’t know that why you guy’s are facing trouble in guternberg editor..

Viewing 8 posts - 1 through 8 (of 8 total)

You must be logged in to reply to this topic.

We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Cookie Policy. If you continue to use this site, you consent to our use of cookies.