Home › Forums › Backend Issues (wp-admin) › Button field with lots of options
I use ACF to build the layout for my pages using one Flexible content field with all the elements/blocks I have on a page as Layouts defined.
Some elements/blocks have the option to add buttons. I also want to provide the option to specify lots of attributes for the button (button style, text, link, target, shadow, effect). This can be done by adding all the options for each Layout (e.g. button style = Select, text = Textfield, Link = Page Link, target = True/false, shadow = Select, effect = Select) but I don’t want to specify all those options over and over again for every Layout I create.
So I wanted to create an Input Field Plugin (like a Super-Button) which you can just include in the Layout and which provides all the available options.
I was wondering if I can use the build in Field types to build this (in PHP). So instead of recreating the Page Link plugin I simply load the Field type and echo it.
Is this a thing that can be done or does will it conflict since maybe not all the Field types are initialized yet? If it’s possible, what would be the code to load it? (already tried $buttontext = new acf_field_text();
and such)
This sounds like what you need is a new field type because I don’t think this is possible using any of the exiting field types
I’ve actually done something similar for a theme where all of the attributes of a link element to turn into a button had to be set for each button.
Anyway, you’d want look at this: http://www.advancedcustomfields.com/resources/creating-a-new-field-type/
Yes, I’ve already created a new field type. But I don’t want to recreate the various ‘subfields’. For example the Page Link select (not sure that’s the name exactly) works perfect with ajax and all so it would be foolish to recreate the html+js for this ‘subfield’ of my new field type.
Sorry, I guess I didn’t quite understand. So you want to create a new field type that makes use of an existing field type but just add additional options.
I could be wrong, but I think that what you’re really looking to do is “extend” one of the existing fields.
Instead of this at the top of the new field class acf_field_FIELD_NAME extends acf_field
you could extend the page link field
class acf_field_FIELD_NAME extends acf_field_page_link
Then I think you would only need to write new functions to replace parts of the page link field, like
render_field
render_field_settings
format_value
update_value
Thanks, that helps. Only this solution is limited to one field type this way. I would base/extend my ‘super-button-field’ on let’s say: the acf_field_page_link. If I want to also story more data (style, target, button text). I would hook into the update_value and render_field to extract the required data. And modify the html for the select and inputfields.
Not quite what I was hoping for 🙂 no offense. But already helps a lot.
Thanks.
The topic ‘Button field with lots of options’ is closed to new replies.
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!
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. Read about how we use cookies and how you can control them in our Cookie Policy. If you continue to use this site, you consent to our use of cookies.