Passing a variable value to a hidden field in Frontend Form Submission

Support MB Frontend Submission Passing a variable value to a hidden field in Frontend Form SubmissionResolved

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #38968
    Denise FieldDenise Field
    Participant

    Hi I have a form that I want a user to submit and I have 3 fields, user_name, registered_email and checkbox_membership.

    I want to pre-fill the user_name with $current_user->user_login and the registered_email with
    $current_user->user_email

    I dont know how to do this, can you help?

    		<div class='user_membership--form'>";
    		global $current_user;
    		get_currentuserinfo();
    	  
    		echo 'Username: ' . $current_user->user_login . "</br>";
    		echo 'User email: ' . $current_user->user_email . "</br>";
    		echo 'User first name: ' . $current_user->user_firstname . "</br>";
    		echo 'User last name: ' . $current_user->user_lastname . "</br>";
    		echo 'User display name: ' . $current_user->display_name . "</br>";
    		echo 'User ID: ' . $current_user->ID . "</br>";
    
    		echo do_shortcode ('[mb_frontend_form id="request-membership-status"]') ."</div>";
    #38987
    PeterPeter
    Moderator

    Hello Denise,

    When registering the meta box and custom fields, you can get the user name with your code and set the default value with the name. For example:

    add_filter( 'rwmb_meta_boxes', function ( $meta_boxes ) {
        // your code to get the current user name here
        $user_name = 'Default user name';
    
        $meta_boxes[] = [
            ...
            'fields'     => [
                [
                    'name' => 'User Name',
                    'id'   => 'user_name',
                    'type' => 'text',
                    'std' => $user_name
                ],
            ],
        ];
    
        return $meta_boxes;
    } );

    Read more on the documentation https://docs.metabox.io/creating-fields-with-code/#field-settings

    #38995
    Denise FieldDenise Field
    Participant

    Thanks I did see that on the docs, but thought it was more of a general setting and I wondered about conflicts - e.g all user name fields as user_name that it would cause an issue in the post_meta table.

    However, if I am understanding what you are saying is that I could have several fields e.g.user_name1, user_name2 etc and then declare them each in here with the same variable name in this case $user_name.

    Thank you for this, I've literally read so much php/sass/jquery etc my eyes are going funny! Sometimes you can't see the wood, for the trees!

    #38996
    Denise FieldDenise Field
    Participant

    I think I must be doing something wrong? The code isnt populating the fields on the form, do I need to add something to the shortcode?

    Here is the function I created

    add_filter( 'rwmb_meta_boxes', function ( $meta_boxes ) {
        // your code to get the current user name here
    	global $current_user;
    	get_currentuserinfo();
        $user_name = $current_user->display_name;
    	$user_email = $current_user->user_email;
    	$user_first = $current_user->user_firstname;
    	$user_last = $current_user->user_lastname;
    
        $meta_boxes[] = [
            
            'fields'     => [
                [
                    'name' => 'username',
                    'id'   => 'user_name',
                    'type' => 'text',
                    'std' => $user_name
                ],
    			[
                    'name' => 'email',
                    'id'   => 'user_email',
                    'type' => 'text',
                    'std' => $user_email
                ],
    			[
                    'name' => 'firstname',
                    'id'   => 'user_firstname',
                    'type' => 'text',
                    'std' => $user_firstname
                ],
    			[
                    'name' => 'lastname',
                    'id'   => 'user_lastname',
                    'type' => 'text',
                    'std' => $user_lastname
                ],
            ],
        ];
    
        return $meta_boxes;
    } );

    Can you help?

    #38997
    Denise FieldDenise Field
    Participant

    EDIT: I corrected a typo on the last 2 variables.

    Here is how I am calling the form and that shows up exactly as expected
    echo do_shortcode ("[mb_frontend_form id='request-membership-status' ]")

    And here is one of the form fields to be populated with the variables
    Screenshot

    #38999
    Denise FieldDenise Field
    Participant

    Morning, can I just clarify, is there a way, using MB Builder and Frontend Form Submission, to set the std to a variable?

    #39001
    Denise FieldDenise Field
    Participant

    I solved it myself thank you, here is how I did it , for anyone else wishing to do this that has some level of skill but not a developer.

    1. Created the Custom Field Types using the Metabox interface. Set them up exactly as I want, without the default value.
    2. Clicked Get PHP Code and copied that code, minus the <?php tag into my functions.php
    3. Added my PHP query to get the user details
    `global $current_user;
    get_currentuserinfo();
    $user_name = $current_user->display_name;
    $user_email = $current_user->user_email;
    $user_first = $current_user->user_firstname;
    $user_last = $current_user->user_lastname; `

    4. added the 'std' => $user_name, etc etc to each field to show the correct variable
    5. output the shortcode of the form <?php echo do_shortcode("[mb_frontend_form id='request-membership-status' ]") ?>
    Job Done!!!
    Here is the complete function I created so if anyone else wants to follow it they can see how it has to be set up as a working function for the MB Frontend Submission form.

    add_filter( 'rwmb_meta_boxes', 'request_membership_status' );
    
    function request_membership_status( $meta_boxes ) {
        $prefix = '';
    
        // your code to get the current user name here
    	global $current_user;
    	get_currentuserinfo();
        $user_name = $current_user->display_name;
    	$user_email = $current_user->user_email;
    	$user_first = $current_user->user_firstname;
    	$user_last = $current_user->user_lastname;
    
        $meta_boxes[] = [
            'title'      => __( 'Request Membership Status', 'pinkequine-com' ),
            'id'         => 'request-membership-status',
            'post_types' => ['membership-request'],
            'fields'     => [
                [
                    'name'          => __( 'First Name', 'pinkequine-com' ),
                    'id'            => $prefix . 'user_first',
                    'type'          => 'text',
                    'admin_columns' => 'replace title',
                    'std'			=> $user_first,
                ],
                [
                    'name'          => __( 'Last Name', 'pinkequine-com' ),
                    'id'            => $prefix . 'user_last',
                    'type'          => 'text',
                    'admin_columns' => 'after user_first',
    				'std'			=> $user_last,
                ],
                [
                    'name'          => __( 'Username', 'pinkequine-com' ),
                    'id'            => $prefix . 'user_name',
                    'type'          => 'text',
                    'admin_columns' => 'after user_last',
    				'std'			=> $user_name,
                ],
                [
                    'name'          => __( 'Email', 'pinkequine-com' ),
                    'id'            => $prefix . 'user_email',
                    'type'          => 'text',
                    'admin_columns' => 'after user_name',
    				'std'			=> $user_email,
                ],
                [
                    'name'              => __( 'Membership', 'pinkequine-com' ),
                    'id'                => $prefix . 'checkbox_membership',
                    'type'              => 'checkbox',
                    'label_description' => __( 'Please add user Member to my profile', 'pinkequine-com' ),
                    'required'          => true,
                    'admin_columns'     => 'after user_email',
                ],
            ],
            'validation' => [
                'rules'    => [
                    $prefix . 'checkbox_membership' => [
                        'required' => true,
                    ],
                ],
                'messages' => [
                    $prefix . 'checkbox_membership' => [
                        'required' => 'Please check the box to confirm your request',
                    ],
                ],
            ],
        ];
    
        return $meta_boxes;
    }
    #40575
    Fernando ArbexFernando Arbex
    Participant

    Very good to see there's a solution.
    I tried out myself but when I used the shortcode, it only displayed the title.

    Here“s the shortcode I used on Gutenberg.

    [mb_frontend_form id="vendas" post_fields="title" label_title="Nome do cliente" submit_button="Cadastrar venda" edit="false" allow_delete="false" post_status="publish" redirect="" confirmation="Cadastro&nbsp;feito&nbsp;com&nbsp;sucesso"]

    What could be?

Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.