-
-
Save ValeriiVasyliev/5f70a0cdf22b635a5e87d09484bf23ec to your computer and use it in GitHub Desktop.
WordPress Advanced Custom Fields get field key from field name
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?php | |
/** | |
* Get field key for field name. | |
* Will return first matched acf field key for a give field name. | |
* | |
* ACF somehow requires a field key, where a sane developer would prefer a human readable field name. | |
* http://www.advancedcustomfields.com/resources/update_field/#field_key-vs%20field_name | |
* | |
* This function will return the field_key of a certain field. | |
* | |
* @param $field_name String ACF Field name | |
* @param $post_id int The post id to check. | |
* @return | |
*/ | |
function acf_get_field_key( $field_name, $post_id ) { | |
global $wpdb; | |
$acf_fields = $wpdb->get_results( $wpdb->prepare( "SELECT ID,post_parent,post_name FROM $wpdb->posts WHERE post_excerpt=%s AND post_type=%s" , $field_name , 'acf-field' ) ); | |
// get all fields with that name. | |
switch ( count( $acf_fields ) ) { | |
case 0: // no such field | |
return false; | |
case 1: // just one result. | |
return $acf_fields[0]->post_name; | |
} | |
// result is ambiguous | |
// get IDs of all field groups for this post | |
$field_groups_ids = array(); | |
$field_groups = acf_get_field_groups( array( | |
'post_id' => $post_id, | |
) ); | |
foreach ( $field_groups as $field_group ) | |
$field_groups_ids[] = $field_group['ID']; | |
// Check if field is part of one of the field groups | |
// Return the first one. | |
foreach ( $acf_fields as $acf_field ) { | |
if ( in_array($acf_field->post_parent,$field_groups_ids) ) | |
return $acf_field->post_name; | |
} | |
return false; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment