What I’ve found is: passing parameters to
acf_get_field_groups() will run any group location rules. Passing no (or empty) parameters will not check all groups but instead returns nothing. So, I was able to use the following to run my custom location
$field_groups = acf_get_field_groups( array( 'post_type' => get_post_type(), ) );
Oh no, I’m sorry, you’re right. The
acf_get_field_groups() with no parameters does return all the fields but it doesn’t seem ( or at least in my case ) check against location rules. It’s only when I pass in filterable parameters ( like post_type above ) does it call
acf_filter_field_groups() and match against location rules.
Adding a custom location rule seems to have changed quite a bit since I’ve set up custom location rules… luckily my legacy code seems to still be working on sites where it’s used.
But because of the way that ACF works is seems like if it’s using the location rules that it should be checking all location rules, including custom rules. I say this because ACF’s rules are run on the same hooks as those that would run custom rules. The only reason I can see it wouldn’t is if there’s some reason the your rules have not been loaded prior to calling acf_get_field_groups().
This could possibly happen if you try to get field groups before acf/init is run which will force a premature initialization of ACF that can have unexpected results.
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!