Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
07/12/2021 11:02:23 PM (4 years ago)
Author:
imath
Message:

Improve BP Block Components & Introduce BP Block Assets

  • Adds a Compatibility ServerSideRender block component to preserve compatibility and use it to render BP Blocks in WordPress < 5.3.
  • Introduce a new store to make BuddyPress active features available within any Block Editor contexts
  • Update node modules.

Fixes #8512

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-core/bp-core-blocks.php

    r12944 r12995  
    2727 *
    2828 * @since 6.0.0
     29 * @since 9.0.0 Adds a dependency to `wp-server-side-render` if WP >= 5.3.
     30 *              Uses a dependency to `wp-editor` otherwise.
    2931 */
    3032function bp_register_block_components() {
     33    $server_side_renderer_dep = 'wp-server-side-render';
     34    if ( bp_is_running_wp( '5.3.0', '<' ) ) {
     35        $server_side_renderer_dep = 'wp-editor';
     36    }
     37
    3138    wp_register_script(
    3239        'bp-block-components',
     
    3845            'wp-api-fetch',
    3946            'wp-url',
     47            $server_side_renderer_dep,
    4048        ),
    41         bp_get_version()
     49        bp_get_version(),
     50        false
     51    );
     52
     53    // Adds BP Block Components to the `bp` global.
     54    wp_add_inline_script(
     55        'bp-block-components',
     56        'window.bp = window.bp || {};
     57        bp.blockComponents = bpBlock.blockComponents;
     58        delete bpBlock;',
     59        'after'
    4260    );
    4361}
    4462add_action( 'bp_blocks_init', 'bp_register_block_components', 1 );
     63
     64/**
     65 * Registers the BP Block Assets.
     66 *
     67 * @since 9.0.0
     68 */
     69function bp_register_block_assets() {
     70    wp_register_script(
     71        'bp-block-data',
     72        plugins_url( 'js/block-data.js', __FILE__ ),
     73        array(
     74            'wp-data',
     75            'wp-api-fetch',
     76            'lodash',
     77        ),
     78        bp_get_version(),
     79        false
     80    );
     81
     82    // Adds BP Block Assets to the `bp` global.
     83    wp_add_inline_script(
     84        'bp-block-data',
     85        sprintf(
     86            'window.bp = window.bp || {};
     87            bp.blockData = bpBlock.blockData;
     88            bp.blockData.embedScriptURL = \'%s\';
     89            delete bpBlock;',
     90            esc_url_raw( includes_url( 'js/wp-embed.min.js' ) )
     91        ),
     92        'after'
     93    );
     94}
     95add_action( 'bp_blocks_init', 'bp_register_block_assets', 2 );
    4596
    4697/**
     
    84135
    85136/**
     137 * Preload the Active BuddyPress Components.
     138 *
     139 * @since 9.0.0
     140 *
     141 * @param string[] $paths The Block Editors preload paths.
     142 * @return string[] The Block Editors preload paths.
     143 */
     144function bp_blocks_preload_paths( $paths = array() ) {
     145    return array_merge(
     146        $paths,
     147        array(
     148            '/buddypress/v1/components?status=active',
     149        )
     150    );
     151}
     152add_filter( 'block_editor_rest_api_preload_paths', 'bp_blocks_preload_paths' );
     153
     154/**
    86155 * Register a BuddyPress block type.
    87156 *
Note: See TracChangeset for help on using the changeset viewer.