Support

Account

Forum Replies Created

  • Hi,

    I’ve been struggling with this for some time, and this is my solution, I guess it’s not perfect, but is working for me.

    function get_acf_field_keys( $custom_field_slug = '' ) {
    
    		$result = array();
    
    		$meta_key_start = 'field_';
    
    		$acf_args = array(
    			'post_type'		=> 'acf'
    		);
    
    		if ( $custom_field_slug !== '' ) {
    			$acf_args[ 'name' ] = $custom_field_slug;
    		}
    
    		$acf_query = new WP_Query( $acf_args );
    
    		if ( $acf_query->have_posts() ) {
    
    			while ( $acf_query->have_posts() ) {
    
    				$acf_query->the_post();
    
    				$meta_values = get_post_meta( get_the_id() );
    
    				foreach ( $meta_values as $meta_key => $meta_value ) {
    					
    					if ( substr( $meta_key, 0, strlen( $meta_key_start ) ) === $meta_key_start ) {
    
    						$meta_value_array = unserialize( $meta_value[0] );
    
    						$result[ $meta_value_array['name'] ] = $meta_key;
    
    					}
    
    				}
    
    			}
    
    		}
    
    		wp_reset_postdata();
    
    		if ( empty( $result ) ) {
    			$result = false;
    		}
    
    		return $result;
    
    	}

    Basically, I’m using WP_Query to iterate through acf posts (Custom fields) & get the metadata, then filter the metadata starting with ‘field_’ to fill an array using the field name as key and the field key as value, to be used like this:

    if ( $field_keys = get_acf_field_keys( 'acf_sample-custom-field' ) ) {
    
    		if ( isset( $field_keys[ 'sample_field_name' ] ) ) {
    			$sample_field_key = $field_keys[ 'sample_field_name' ];
    		}
    }

    I hope this is helpful for someone.

Viewing 1 post (of 1 total)