diff --git a/src/WPStrava/Blocks/Route.php b/src/WPStrava/Blocks/Route.php index 98affcd..59e8410 100644 --- a/src/WPStrava/Blocks/Route.php +++ b/src/WPStrava/Blocks/Route.php @@ -48,6 +48,7 @@ class WPStrava_Blocks_Route implements WPStrava_Blocks_Interface { ), ) ); + add_action( 'wp_footer', array( $this, 'print_scripts' ) ); } @@ -68,7 +69,7 @@ class WPStrava_Blocks_Route implements WPStrava_Blocks_Interface { $this->add_script = true; $matches = array(); - preg_match( '/\/routes\/([0-9].*)$/', $attributes['url'], $matches ); + preg_match( '#/routes/([0-9].*)$#', $attributes['url'], $matches ); if ( $matches[1] ) { // Transform from block attributes to shortcode standard. $attributes = array( diff --git a/src/blocks/route/index.js b/src/blocks/route/index.js index 70a50a1..70c398b 100644 --- a/src/blocks/route/index.js +++ b/src/blocks/route/index.js @@ -1,9 +1,27 @@ /* global wp, wpStrava */ -import { registerBlockType } from '@wordpress/blocks'; +import { registerBlockType, createBlock } from '@wordpress/blocks'; import edit from './edit'; import metadata from './block.json'; metadata.edit = edit; metadata.save = () => null; +metadata.transforms = { + from: [ + { + type: "raw", + priority: 10, + isMatch: ( node ) => + node.nodeName === "P" && + node.innerText.startsWith( "https://www.strava.com/routes/" ), + + transform: function( node ) { + return createBlock( metadata.name, { + url: node.innerText, + } ); + } + } + ] +}; + registerBlockType( metadata.name, metadata );