Home Forums General Issues Creating a unique ID in text field only once


Creating a unique ID in text field only once

  • The code below created a unique id to populate a text field called ‘measurement_id’. This works as expected.

    function yl_create_unique_id_acf_field( $value, $post_id, $field ) {
    		$uniqueid_length	= 8; 
    		$uniqueid			= crypt(uniqid(rand(),1)); 
    		$uniqueid			= strip_tags(stripslashes($uniqueid)); 
    		$uniqueid			= str_replace(".","",$uniqueid); 
    		$uniqueid			= strrev(str_replace("/","",$uniqueid)); 
    		$uniqueid			= substr($uniqueid,0,$uniqueid_length);
    		$uniqueid			= strtoupper($uniqueid);
    		$title = 'GM-' . $uniqueid;
    		return $title;
    add_filter('acf/load_value/name=measurement_id', 'yl_create_unique_id_acf_field', 10, 3);

    The problem:
    After refreshing/updating the field/post, the unique id changes every time but I only want to add the unique id once.

    So only the first time, when the field is still empty and the post hasn’t been created yet, I want to populate the text field with the unique id. After saving/updating the post the unique id needs te stay the same forever.

    So I’m looking for I guess an IF EMPTY statement or something….

  • You can wrap the entire inner function in an if statement to avoid running any code if the field value is not empty.

    if ( empty( $value ) ) :
        // contents of {yl_create_unique_id_acf_field} function.
Viewing 2 posts - 1 through 2 (of 2 total)

You must be logged in to reply to this topic.

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 Cookie Policy. If you continue to use this site, you consent to our use of cookies.