Vorhandene Blöcke bearbeiten
Wenn du die Core Blöcke bearbeiten möchtest, ohne deren Quellcode anfassen zu müssen, kannst du mit den React WordPress Hooks arbeiten.
Last updated
Was this helpful?
Wenn du die Core Blöcke bearbeiten möchtest, ohne deren Quellcode anfassen zu müssen, kannst du mit den React WordPress Hooks arbeiten.
Last updated
Was this helpful?
Was this helpful?
wp.data.select('core/block-editor').getBlocks();import { createHigherOrderComponent } from '@wordpress/compose';
import { Fragment } from '@wordpress/element';
import { InspectorControls } from '@wordpress/block-editor';
import { PanelBody, ToggleControl } from '@wordpress/components';function spacerAttr( props ) {
if( props.name === 'core/spacer' && props.hasOwnProperty('attributes') ){
// Add Attr -> Diver
props.attributes.trenner = {
type: 'boolean',
default: false
};
}
return props;
}
wp.hooks.addFilter('blocks.registerBlockType', 'prwp/spaceractive', spacerAttr );<BlockEdit { ...props } />const override = createHigherOrderComponent( ( BlockEdit ) => {const override = createHigherOrderComponent( ( BlockEdit ) => {
return ( props ) => {
if ( 'core/spacer' === props.name ) {
return(
<Fragment>
<section className={ props.attributes.trenner === true ? 'prwp-gutenberg-trenner--open' : 'prwp-gutenberg-trenner' }>
<BlockEdit { ...props } />
</section>
<InspectorControls>
<PanelBody title="Trennlinie">
<p>
<small>
Wollen Sie eine Trennlinie sichtbar machen?
</small>
</p>
<ToggleControl
label="Trennlinie aktivieren"
checked={ props.attributes.trenner }
onChange={ ( boolean ) => {
props.setAttributes({
trenner: boolean
});
}}
/>
</PanelBody>
</InspectorControls>
</Fragment>
)
}
return(
<Fragment>
<BlockEdit { ...props } />
</Fragment>
)
};
}, "withInspectorControl" );
wp.hooks.addFilter( 'editor.BlockEdit', 'core/spacer', override );// INT
function prwp_seperator_override() {
register_block_type( 'core/spacer', array(
'render_callback' => 'prwp_seperator_override_render',
'attributes' => array(
'trenner' => array(
'type' => 'boolean',
'default' => false
),
'height' => array(
'type' => 'integer',
)
),
) );
}
add_action( 'init', 'prwp_seperator_override' );
// Render
function prwp_seperator_override_render( $attributes, $content ) {
ob_start();?>
<div <?php if( $attributes['height'] ) echo 'style="height: '. $attributes['height'] .'px " ' ?>
class="prwp-gutenberg-driver <?php if( $attributes['trenner'] ) echo 'prwp-gutenberg-trenner--open' ?>">
</div>
<?php
// Clean UP
$ret = ob_get_contents();
ob_end_clean();
return $ret;
}