'wpsp', 'title' => __( 'Schema Pro', 'wp-schema-pro' ), ), ) ); } /** * Enqueue Gutenberg block assets for both frontend + backend. * * @since 2.2.0 */ public function block_assets() { $post = get_post(); /** * Filters the post to build stylesheet for. * * @param \WP_Post $post The global post. */ $post = apply_filters( 'wpsp_post_for_stylesheet', $post ); if ( false === has_blocks( $post ) ) { return; } if ( false === BSF_SP_Helper::$wpsp_flag ) { return; } wp_enqueue_style( 'wpsp-block-css', // Handle. BSF_AIOSRS_PRO_URI . 'dist/style-blocks.css', // Block style CSS. array(), BSF_AIOSRS_PRO_VER ); $blocks = BSF_SP_Config::get_block_attributes(); $block_assets = BSF_SP_Config::get_block_assets(); foreach ( $blocks as $slug => $value ) { $js_assets = ( isset( $blocks[ $slug ]['js_assets'] ) ) ? $blocks[ $slug ]['js_assets'] : array(); $css_assets = ( isset( $blocks[ $slug ]['css_assets'] ) ) ? $blocks[ $slug ]['css_assets'] : array(); foreach ( $js_assets as $asset_handle => $val ) { // Scripts. wp_register_script( $val, // Handle. $block_assets[ $val ]['src'], $block_assets[ $val ]['dep'], BSF_AIOSRS_PRO_VER, true ); $skip_editor = isset( $block_assets[ $val ]['skipEditor'] ) ? $block_assets[ $val ]['skipEditor'] : false; if ( is_admin() && false === $skip_editor ) { wp_enqueue_script( $val ); } } foreach ( $css_assets as $asset_handle => $val ) { // Styles. wp_register_style( $val, // Handle. $block_assets[ $val ]['src'], $block_assets[ $val ]['dep'], BSF_AIOSRS_PRO_VER ); if ( is_admin() ) { wp_enqueue_style( $val ); } } } } // End function editor_assets(). /** * Enqueue Gutenberg block assets for backend editor. * * @since 2.2.0 */ public function editor_assets() { $wpsp_ajax_nonce = wp_create_nonce( 'wpsp_ajax_nonce' ); $script_dep_path = BSF_AIOSRS_PRO_DIR . 'dist/blocks.asset.php'; $script_info = file_exists( $script_dep_path ) ? include $script_dep_path : array( 'dependencies' => array(), 'version' => BSF_AIOSRS_PRO_VER, ); $script_dep = array_merge( $script_info['dependencies'], array( 'wp-blocks', 'wp-i18n', 'wp-element', 'wp-components', 'wp-editor', 'wp-api-fetch' ) ); // Scripts. wp_enqueue_script( 'wpsp-block-editor-js', // Handle. BSF_AIOSRS_PRO_URI . 'dist/blocks.js', $script_dep, // Dependencies, defined above. $script_info['version'], // BSF_AIOSRS_PRO_VER. true // Enqueue the script in the footer. ); // Common Editor style. wp_enqueue_style( 'wpsp-block-common-editor-css', // Handle. BSF_AIOSRS_PRO_URI . 'wpsp-blocks/assets/css/blocks.commoneditorstyle.build.css', // Block editor CSS. array( 'wp-edit-blocks' ), // Dependency to include the CSS after it. BSF_AIOSRS_PRO_VER ); $blocks = array(); $saved_blocks = BSF_SP_Admin_Helper::get_admin_settings_option( '_wpsp_blocks' ); if ( is_array( $saved_blocks ) ) { foreach ( $saved_blocks as $slug => $data ) { $_slug = 'wpsp/' . $slug; $current_block = BSF_SP_Config::$block_attributes[ $_slug ]; if ( isset( $current_block['is_child'] ) && $current_block['is_child'] ) { continue; } if ( isset( $current_block['is_active'] ) && ! $current_block['is_active'] ) { continue; } if ( isset( $saved_blocks[ $slug ] ) && ( 'disabled' === $saved_blocks[ $slug ] ) ) { array_push( $blocks, $_slug ); } } } wp_localize_script( 'wpsp-block-editor-js', 'wpsp_blocks_info', array( 'blocks' => BSF_SP_Config::get_block_attributes(), 'category' => 'wpsp', 'ajax_url' => admin_url( 'admin-ajax.php' ), 'tablet_breakpoint' => WPSP_TABLET_BREAKPOINT, 'mobile_breakpoint' => WPSP_MOBILE_BREAKPOINT, 'wpsp_ajax_nonce' => $wpsp_ajax_nonce, 'wpsp_home_url' => home_url(), 'wpsp_base_url' => BSF_AIOSRS_PRO_URI, 'wpsp_icons' => $this->get_svg_icons(), ) ); } // End function editor_assets(). /** * Get the SVG icons. */ private function get_svg_icons() { $file_url = BSF_AIOSRS_PRO_URI . 'wpsp-config/controls/WPSPIcon.json'; $response = wp_remote_get( $file_url ); if ( is_wp_error( $response ) ) { return array(); // Return an empty array if there's an error. } $body = wp_remote_retrieve_body( $response ); $icons = json_decode( $body, true ); return is_array( $icons ) ? $icons : array(); } } /** * Prepare if class 'BSF_SP_Init_Blocks' exist. * Kicking this off by calling 'get_instance()' method */ BSF_SP_Init_Blocks::get_instance();