In the BricksLabs Facebook group a user asked:
Hello! ???? Is it possibile to conditionally show ACF meta boxes based on how many parents a custom post type has? For example, show only if the post being edited has 2 parents.
I attempted to use the filter acf/prepare_field, but without success.
Is there a tutorial or example code available that can guide me in achieving this conditional display? Thanks in advance! ????
ACF has a handy acf/prepare_field filter using which custom fields can be conditionally output when editing posts (can be of any post type).
To render a ACF custom field named “location_specialty” only if the current (location) post has exactly two parents using the acf/prepare_field/name=example_field filter, add this code in
Add the following in child theme‘s functions.php (w/o the opening PHP tag) or a code snippets plugin:
<?php
add_filter( 'acf/prepare_field/name=location_specialty', function ( $field ) {
return count( get_post_ancestors( get_the_ID() ) ) === 2 ? $field : false;
} );
Use case: Let’s say you have these location posts:

and you want a “Location Specialty” custom field that’s in a field group attached to the “Location” CPT to only appear when Melbourne (or any other location that has 2 parents similarly) is being edited. This code snippet does the job.
Reference
https://developer.wordpress.org/reference/functions/get_post_ancestors/