Home › Forums › General Issues › get_field / get_sub_field conditional?
Hi!
I wasn’t sure what to search for. I searched various things but didn’t really find anything that related to my situation.
I created a component field group. It takes an image, title, blurb, URL. I call it… dun dun dun duuuunn Image Block. :: bows ::
This component is cloned in various other field groups. Some is nested within a flex content or some are just in the normal spot.
I created a template partial for this block and would like to use it across the board, however in some cases… the fields are a sub field and other times, its just a field.
Right now, I have a conditional checking for the title field, since it’s required.
if ( get_field( 'image_block_headline' ) ) {
$title = get_field( 'image_block_headline' );
$image = get_field( 'image_block_image' );
} elseif ( get_sub_field( 'image_block_headline' ) ) {
$title = get_sub_field( 'image_block_headline' );
$image = get_sub_field( 'image_block_image' );
}
It’s a bit sloppy in my opinion, but it does the job. I was wondering if anyone else came across this situation and what they have done. Or if there’s some ACF trick that I’m not aware of.
Thanks!
Too late to update the title, but perhaps “Detecting if its a sub field or not” would be good too…
@nyrngrs24 I have done this with cloned fields, what I do is that I encapsulate the cloned field in group fields. Basically I create a group field and then I add one sub field which is the clone. This means that the fields are always sub fields.
However, my purpose for doing this was so that I could add the same clone multiple times and the group field is named differently each time so it does require different have_rows() loops.
I get around this by getting the entire group in my template and then calling a function with the array value returned.
$args = get_field('group-field-name');
my_function($args);
An old post, back to life!
My solution for this is a function.
function get_acf_field( $name, $id = null ) {
$field = get_sub_field( $name, $id ) ? get_sub_field( $name, $id ) : get_field( $name, $id );
return $field;
}
Seems to work for my needs. Hopefully it’ll help others. This gives me the ability to use the same component within a repeater/flex content or standalone on a page/post. @hube2 Your idea would also be a good solution so that the component fields are always a sub field. That makes sense too. Probably a bit faster too than doing the conditional check for every field.
I probably read your question when you first posted it but did not have an idea of a solution at the time. The recent spam comment caused your topic to move to the top of the list. I’ve just built a site, or I should say a few sites, where I have a “CTA” block that can be added to just about anything and I needed to find a way to do that.
The topic ‘get_field / get_sub_field conditional?’ 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 Privacy Policy. If you continue to use this site, you consent to our use of cookies.