Set real term_meta on ACF terms custom fields on update/create

/**
 * ACF fix for term meta
 * replace {{custom_term_meta_x}} by your ACF term custom field name
 * TODO: loop over all term_meta to auto-generate filters
 *
 * https://support.advancedcustomfields.com/forums/topic/how-to-use-wp-term-meta-on-acf-the-easy-way/
 */
function acf_update_term_meta( $value, $post_id, $field ) {
	$term_id = (int) filter_var( $post_id, FILTER_SANITIZE_NUMBER_INT );
	if ( $term_id > 0 ) {
		update_term_meta( $term_id, $field['name'], $value );
	}

	return $value;
}
add_filter( 'acf/update_value/name={{custom_term_meta_1}}', 'acf_update_term_meta', 10, 3 );
add_filter( 'acf/update_value/name={{custom_term_meta_2}}', 'acf_update_term_meta', 10, 3 );

function acf_load_term_meta( $value, $post_id, $field ) {
	$term_id = (int) filter_var( $post_id, FILTER_SANITIZE_NUMBER_INT );
	if ( $term_id > 0 ) {
		$value = get_term_meta( $term_id, $field['name'], true );
	}

	return $value;
}
add_filter( 'acf/load_value/name={{custom_term_meta_1}}', 'acf_load_term_meta', 10, 3 );
add_filter( 'acf/load_value/name={{custom_term_meta_2}}', 'acf_load_term_meta', 10, 3 );
This site uses cookies to offer you a better browsing experience. By browsing this website, you agree to our use of cookies.