Support

Account

Home Forums General Issues Tracing Location Rules

Solving

Tracing Location Rules

  • Hello,

    I’m trying to trackback how Location Rules are processed. The end goal is to run the Location Rules on the Frontend checking against my Location Classes match() method. In the admin panel, does anybody know which file/methods handle the match process?

  • There are 25 files located in
    /advanced-custom-fields-pro/includes/locations/
    AND
    /advanced-custom-fields-pro/pro/locations/

  • Also, all of the location filters are run from the functions located in
    /advanced-custom-fields-pro/includes/locations.php

  • Thanks!

    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 match() method:

    $field_groups = acf_get_field_groups( array(
    	'post_type' => get_post_type(),
    ) );
  • acf_get_field_groups() must have changed, it used to get all field groups if no arguments were passed. That’s interesting.

  • 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.

Viewing 7 posts - 1 through 7 (of 7 total)

You must be logged in to reply to this topic.