Kontext im Editor blockieren.BlockEdit-Filter

Lesezeit: 1 Minute

Ich versuche, einen zentralen Gutenberg-Block so zu erweitern, dass er nur dann einige zusätzliche Optionen enthält, wenn er in einem bestimmten benutzerdefinierten Block enthalten ist. Ich dachte, der Blockkontext würde dies zu einer einfachen Aufgabe machen – setzen Sie den Containerblock auf „providesContext“ und verwenden Sie den Filter „blocks.registerBlockType“, um dem Kernblock „usesContext“ hinzuzufügen. Im Editor.BlockEdit-Filter dachte ich, ich könnte den Kontext aus den Requisiten des Blocks abrufen. Der Kontext gehört jedoch nicht zu den Requisiten. Um sicherzustellen, dass ich im Zusammenhang mit dem Kontext nichts falsch gemacht habe, habe ich den Filter „editor.BlockEdit“ für einen meiner benutzerdefinierten Blöcke verwendet, von dem ich wusste, dass er den Blockkontext korrekt empfängt. Es hat auch keinen Kontext als eine seiner Requisiten.

Kennt jemand eine Möglichkeit, Blockkontext in den Filter editor.BlockEdit zu bekommen?

Als Referenz ist hier ein Ausschnitt des bisherigen Codes:

    title: 'Card',
    icon: 'images-alt2',
    category: 'utdesign_system',
    description: '',
    attributes: {
        blockName: {
            type: 'string',
            default: 'card',
        }
    },
    providesContext: {
        'card/blockName': 'blockName',
    },
    edit,
    save,
} );

function addImageContext( settings ) {
    if( settings.name == 'core/image' ){
        settings.usesContext = Object.assign( ['card/blockName'] );
    }
    return settings;
}

addFilter(
    'blocks.registerBlockType',
    'gutenstrap/image-context',
    addImageContext
);

const addImageControls =  createHigherOrderComponent( ( BlockEdit ) => {
    return ( props ) => {
        
        const {
            name,
            attributes,
            setAttributes,
            context,
            isSelected,
        } = props;
        //do stuff with context
    };
}, "addImageControls" );

addFilter(
    'editor.BlockEdit',
    'gutenstrap/image-context',
    addImageControls
);```

Das ist jetzt dokumentiert https://developer.wordpress.org/block-editor/reference-guides/block-api/block-context/

registerBlockType( 'my-plugin/record-title', {
    title: 'Record Title',
    category: 'widgets',
 
    usesContext: [ 'my-plugin/recordId' ],
 
    edit( { context } ) {
        return 'The record ID: ' + context[ 'my-plugin/recordId' ];
    },
 
    save() {
        return null;
    },
} );

  • Sie fragen ausdrücklich nach dem Zugriff context innerhalb der editor.BlockEdit filtern, nicht wie Kontext in einer normalen benutzerdefinierten Blocksituation registriert und verwendet wird.

    – kr0ybot

    14. April um 21:14 Uhr

1178780cookie-checkKontext im Editor blockieren.BlockEdit-Filter

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy