Home › Forums › Feature Requests › Conditional Logic using Taxonomy field › Reply To: Conditional Logic using Taxonomy field
I’ve had the same issue and have created a class if you have multiple post types with fields that you want to appear on whether a term is selected or not.
`<?php
/**
* Class for hiding an acf field based on if a term is selected.
* Developer: Brad Goddard
* Website: https://www.lucid-digital.co.uk
* @package LucidDigital
*/
class Hide_acf_fields_conditional_term {
public $post_type_slug;
public $term_id;
public $field_class;
public function __construct( $post_type_slug, $term_id, $field_class ) {
$this->set_post_type_slug( $post_type_slug );
$this->set_term_id( $term_id );
$this->set_field_class( $field_class );
add_action( ‘acf/input/admin_head’, [$this, ‘my_acf_admin_head’] );
}
/**
* @return mixed
*/
public function get_post_type_slug() {
return $this->post_type_slug;
}
/**
* @param mixed $post_type_slug
*/
public function set_post_type_slug( $post_type_slug ) {
$this->post_type_slug = $post_type_slug;
}
/**
* @return mixed
*/
public function get_term_id() {
return $this->term_id;
}
/**
* @param mixed $term_id
*/
public function set_term_id( $term_id ) {
$this->term_id = $term_id;
}
/**
* @return mixed
*/
public function get_field_class() {
return $this->field_class;
}
/**
* @param mixed $field_class
*/
public function set_field_class( $field_class ) {
$this->field_class = $field_class;
}
function my_acf_admin_head() {
global $post_type;
if ( $this->get_post_type_slug() === $post_type ) :
// Gets taxonomy term from $this->get_post_type_slug().
$taxonomy = get_object_taxonomies($this->get_post_type_slug());
?>
<script type=”text/javascript”>
(function ($) {
acf.add_action(‘ready’, function ($el) {
// Container for the sub title field.
var container = $(‘.’ + ‘<?php echo $this->field_class; ?>’);
// Featured checkbox.
var $field = $(‘#’ + ‘<?php echo $taxonomy[0]; ?>’ + ‘div input’);
// The checkbox relative to $this->get_term_id().
var checkbox = $(‘#in-‘ + ‘<?php echo $taxonomy[0]; ?>’ + ‘-‘ + ‘<?php echo $this->get_term_id(); ?>’);
container.addClass(‘hidden-by-conditional-logic’);
// If $this->get_term_id() term is already selected then show the $this->field_class field.
if ($(checkbox).is(‘:checked’)) {
container.removeClass(‘hidden-by-conditional-logic’);
}
// Click function to show and hide the $this->field_class field.
$field.on(‘click’, function (evt) {
if ($(checkbox).is(‘:checked’)) {
container.removeClass(‘hidden-by-conditional-logic’);
} else {
container.addClass(‘hidden-by-conditional-logic’);
}
});
});
})(jQuery);
</script>
<?php endif;
}
}
new Hide_acf_fields_conditional_term( [post-type-slug], [term-id], [acf-field-container-class] );`
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.