Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
03/25/2020 07:31:07 AM (6 years ago)
Author:
imath
Message:

Introduce the BP Blocks API into BP Core

  • The BP_Block class is wrapping the WP_Block_Type one to manage JavaScript and CSS assets registration and script translations.
  • To register a new BP Block, we are introducing a new function using this BP_Block class : bp_register_block().
  • Registering BP Blocks needs to happen hooking the bp_blocks_init action.
  • The BP_Component class now includes a new method BuddyPress components can use to register their blocks. It also makes sure this method is only usable if the BP REST API is available.
  • The dynamic filter bp_{component_id}_register_blocks let developers add or disable BP component blocks.
  • A dynamic action bp_{component_id}_blocks_init is fired once all corresponding BP component blocks has been registered.
  • The bp_blocks_editor_settings filter is gathering specific BuddyPress editor settings into a bp object.

See #8048

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-core/classes/class-bp-component.php

    r12547 r12578  
    467467        }
    468468
     469        // Register BP Blocks.
     470        if ( bp_rest_api_is_available() ) {
     471            add_action( 'bp_blocks_init', array( $this, 'blocks_init' ), 10 );
     472        }
     473
    469474        /**
    470475         * Fires at the end of the setup_actions method inside BP_Component.
     
    907912        do_action( 'bp_' . $this->id . '_rest_api_init' );
    908913    }
     914
     915    /**
     916     * Register the BP Blocks.
     917     *
     918     * @since 6.0.0
     919     *
     920     * @param array $blocks The list of BP Blocks to register.
     921     */
     922    public function blocks_init( $blocks = array() ) {
     923        if ( is_array( $blocks ) && $blocks ) {
     924            /**
     925             * Filter here to disable all or some BP Blocks for a component.
     926             *
     927             * This is a dynamic hook that is based on the component string ID.
     928             *
     929             * @since 6.0.0
     930             *
     931             * @param array $blocks The list of BP Blocks for the component.
     932             */
     933            $blocks = (array) apply_filters( 'bp_' . $this->id . '_register_blocks', $blocks );
     934
     935            foreach ( $blocks as $block ) {
     936                bp_register_block( $block );
     937            }
     938        }
     939
     940        /**
     941         * Fires in the blocks_init method inside BP_Component.
     942         *
     943         * This is a dynamic hook that is based on the component string ID.
     944         *
     945         * @since 6.0.0
     946         */
     947        do_action( 'bp_' . $this->id . '_blocks_init' );
     948    }
    909949}
    910950endif; // BP_Component.
Note: See TracChangeset for help on using the changeset viewer.