Change user meta value with shortcode

The question:

With shortcode, i want to create form to change the car’s name of user


function wp_change_namecar( $atts, $content = null  ) {
    if (is_user_logged_in()) {
        $user_id = get_current_user_id();
        $userval = //how to define that it is the value of the form?

          if (isset($_POST['validate_user'])) {
            if ($_POST['validate_user'] == $user_id) {
                if (update_user_meta( $user_id, 'user_name_car', '$userval' )) {
                    return "<div class='user_updated'>Updated!</div>";
                } else {
                    return "<div class='user_updated error'>Not Updated!</div>";
                }
            }
        }
        
        //Show the form
       return "<form method='post'>
       <label for='cars'>Choose a car:</label>
       <select id='cars' name='cars'>
         <option value='volvo'>Volvo</option>
         <option value='saab'>Saab</option>
         <option value='fiat'>Fiat</option>
         <option value='audi'>Audi</option>
       </select>
         <input type='submit' value='Change' />
       </form>";
        
    }
} 
add_shortcode('change_namecar','wp_change_namecar');

THX

The Solutions:

Below are the methods you can try. The first solution is probably the best. Try others if the first one doesn’t work. Senior developers aren’t just copying/pasting – they read the methods carefully & apply them wisely to each case.

Method 1

You made error, you made checks on the value which were null, i compile your code and made changes, here is the code it will help you.


function wp_change_namecar( $atts, $content = null  ) {
    if (is_user_logged_in()) {
        $user_id = get_current_user_id();
        $userval =$_POST['cars']; //how to define that it is the value of the form?

        if ($userval && $user_id) {
            if (update_user_meta( $user_id, 'user_name_car', $userval )) {
                return "<div class='user_updated'>Updated!</div>";
            } else {
                return "<div class='user_updated error'>Not Updated!</div>";
            }
        }    
        //Show the form
       return "<form method='post'>
       <label for='cars'>Choose a car:</label>
       <select id='cars' name='cars'>
         <option value='volvo'>Volvo</option>
         <option value='saab'>Saab</option>
         <option value='fiat'>Fiat</option>
         <option value='audi'>Audi</option>
       </select>
         <input type='submit' value='Change' />
       </form>";
        
    }
} 
add_shortcode('change_namecar','wp_change_namecar');


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Comment