bootstrap-blocks-wordpress-plugin icon indicating copy to clipboard operation
bootstrap-blocks-wordpress-plugin copied to clipboard

Support IDs (HTML Anchors)

Open gettonet opened this issue 5 years ago • 2 comments
trafficstars

Would be very useful if container or row would have an option to add id, along with class...Any chance of implementing this feature?

gettonet avatar Apr 04 '20 09:04 gettonet

Hi @gettonet. There was already a feature request to add an ID attribute to the blocks here: https://wordpress.org/support/topic/classes-being-added-to-the-block-outer-and-not-the-row/. As I wrote there in my opinion this should be a feature which should be added by Gutenberg itself. But since this doesn't seem to happen in the near future I will think about adding them to our blocks.

tschortsch avatar Apr 04 '20 16:04 tschortsch

I agree that it would be nice feature to have - and it is easy to add it. Let's say for the row block we may add blockId or elementId attribute in:

class-row-block-type.php

protected $attributes = array(
	'blockId' => array(
		'type' => 'string',
	),

the default value in the same file like:

protected $default_attributes = array(
	'blockId' => '',
	...

then in row/edit.js

const {
	blockId,
	...
} = attributes;
...
<PanelBody>
	<TextControl
		label="Block Id"
		value={ blockId }
		onChange={ ( value ) => {
			setAttributes( {
				blockId: value,
			} );
		} }
	/>
</PanelBody>
...

and finally modify templates/row.php

$blockId = "";
if ( array_key_exists( 'blockId', $attributes ) && !empty( $attributes['blockId'] ) ) {
	$blockId = 'id="' . esc_attr( $attributes['blockId'] ) . '"';
}

and

<div <?php echo $blockId; ?> class="<?php echo esc_attr( implode( ' ', $classes ) ); ?>">

forcecodema avatar Oct 31 '20 02:10 forcecodema