I may be asking for the moon on a stick here, but:
I’ve got an ACF block which is just a single
textarea field with
wpautop formatting (the block output is slightly modified to give it a wrapper with conditional classes based on the current page). Client is pasting in many paragraphs of text from documents and emails, so would like to be able to use Transform to on selected Paragraph blocks to switch them to this custom ACF paragraph block.
Is this possible with
acf_register_block? I noticed there’s a
transforms argument when registering a block type in the core: https://wordpress.org/gutenberg/handbook/designers-developers/developers/block-api/block-registration/#transforms-optional
Sooo, i finally managed to found a way of achieve this.
First, you need to modify the way you register the block in ACF.
You’ll have to add “transform” in your acf_register_block() call
(All the needed code is in the Gist)
Then, the PHP will pass your transformers “transform” method as a string, not a callable function, so we need to convert it.
Then, in my transformer function, I receive an object with the string content, and there it is the ugliest part, (I don’t find any solution to pass content directly to the createBlock method for ACF block, maybe ACF can tell us?)
I use a setInterval to wait the ACF block is loaded in the DOM and I put the content into my field.
You can find all the code here:
SO: I know it’s an ugly and hacky way to achieve this, but I didn’t find any other way (except rebuild my Block without ACF but it wasn’t an option) and it seem’s to work.. I imagine for people who know better the ACF & Gutenberg API than me there are some other and better ways to do..
@jeremy_fcinq based on your approach I was thinking about using about either using:
return wp.blocks.createBlock('acf/owl-link', atts); – so with passing the some attributes as data
blocks.switchToBlockType.transformedBlock filter and overriding the attributes data.
Sadly they both didn’t worked :/ But I still think this is a valid – creating the ACF block with parameters – I just can’t find the way how to do this.
You must be logged in to reply to this topic.
Welcome to the Advanced Custom Fields community forum.
Browse through ideas, snippets of code, questions and answers between fellow ACF users
Helping others is a great way to earn karma, gain badges and help ACF development!
© 2023 Advanced Custom Fields.