1

I'm building a template page for submit a profile changes. I would like to show a 'correct' message in green(example) for the user knows.

Here my template code:

<?php
global $avia_config;
/**
 * Template Name: User Profile
 *
 * Allow users to update their profiles from Frontend.
 *
 */

/* Get user info. */
global $current_user, $wp_roles;
get_currentuserinfo();

/* Load the registration file. */
require_once( ABSPATH . WPINC . '/registration.php' );
$error = array();
$correct = array();    
/* If profile was saved, update profile. */
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == 'update-user' ) {

    /* Update user password. */
    if ( !empty($_POST['pass1'] ) && !empty( $_POST['pass2'] ) ) {
        if ( $_POST['pass1'] == $_POST['pass2'] )
            wp_update_user( array( 'ID' => $current_user->ID, 'user_pass' => esc_attr( $_POST['pass1'] ) ) );
        else
            $error[] = __('The passwords you entered do not match.  Your password was not updated.', 'profile');
    }

    /* Update user information. */
    if ( !empty( $_POST['url'] ) )
        update_user_meta( $current_user->ID, 'user_url', esc_url( $_POST['url'] ) );

    if ( !empty( $_POST['nickname'] ) )
        update_user_meta( $current_user->ID, 'nickname', esc_attr( $_POST['nickname'] ) );

    if ( !empty( $_POST['description'] ) )
        update_user_meta( $current_user->ID, 'description', esc_attr( $_POST['description'] ) );

    /* Redirect so the page will show updated info.*/
  /*I am not Author of this Code- i dont know why but it worked for me after changing below line to if ( count($error) == 0 ){ */
    if ( count($error) == 0 ) {
        $correct[] = __('Correct message', 'profile');
        //action hook for plugins and extra fields saving
        do_action('edit_user_profile_update', $current_user->ID);
        wp_redirect( get_permalink() );
        exit;
    }
}
    /*
     * get_header is a basic wordpress function, used to retrieve the header.php file in your theme directory.
     */
     get_header();


     if( get_post_meta(get_the_ID(), 'header', true) != 'no') echo avia_title();
     ?>

        <div class='container_wrap container_wrap_first main_color <?php avia_layout_class( 'main' ); ?>'>

            <div class='container'>

                <main class='template-page content  <?php avia_layout_class( 'content' ); ?> units' <?php avia_markup_helper(array('context' => 'content','post_type'=>'page'));?>>

                    <?php
                    /* Run the loop to output the posts.
                    * If you want to overload this in a child theme then include a file
                    * called loop-page.php and that will be used instead.
                    */
                    if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
    <div id="post-<?php the_ID(); ?>">
        <div class="entry-content entry">
            <?php the_content(); ?>
            <?php if ( !is_user_logged_in() ) : ?>
                    <p class="warning">
                        <?php _e('You must be logged in to edit your profile.', 'profile'); ?>
                    </p><!-- .warning -->
            <?php else : ?>

                <form method="post" id="adduser" action="<?php the_permalink(); ?>">
                    <p class="nickname">
                        <label for="nickname"><?php _e('Nickname *', 'profile'); ?></label>
                        <input class="text-input" name="nickname" type="text" id="nickname" value="<?php the_author_meta( 'nickname', $current_user->ID ); ?>" />
                    </p><!-- .form-nickname -->
                    <p class="username">
                        <label for="user-login"><?php _e('Username (Not editable)','profile')?></label>
                        <input class="text" name="username" type="text" id="username" readonly value="<?php the_author_meta( 'user_login', $current_user->ID ); ?>"/>
                    </p>
                   <!-- <p class="form-username">
                        <label for="last-name"><?php _e('Last Name', 'profile'); ?></label>
                        <input class="text-input" name="last-name" type="text" id="last-name" value="<?php the_author_meta( 'last_name', $current_user->ID ); ?>" />
                    </p>--><!-- .form-username -->
                    <p class="form-email">
                        <label for="email"><?php _e('E-mail (Not editable)', 'profile'); ?></label>
                        <input class="text-input" name="email" type="text" id="email" readonly value="<?php the_author_meta( 'user_email', $current_user->ID ); ?>" />
                    </p><!-- .form-email -->
                    <p class="form-url">
                        <label for="url"><?php _e('Website', 'profile'); ?></label>
                        <input class="text-input" name="url" type="text" id="url" value="<?php the_author_meta( 'user_url', $current_user->ID ); ?>" />
                    </p><!-- .form-url -->
                    <p class="form-password">
                        <label for="pass1"><?php _e('Password *', 'profile'); ?> </label>
                        <input class="text-input" name="pass1" type="password" id="pass1" />
                    </p><!-- .form-password -->
                    <p class="form-password">
                        <label for="pass2"><?php _e('Repeat Password *', 'profile'); ?></label>
                        <input class="text-input" name="pass2" type="password" id="pass2" />
                    </p><!-- .form-password -->
                    <p class="form-textarea">
                        <label for="description"><?php _e('Biographical Information', 'profile') ?></label>
                        <textarea name="description" id="description" rows="3" cols="50"><?php the_author_meta( 'description', $current_user->ID ); ?></textarea>
                    </p><!-- .form-textarea -->

                    <?php 
                        //action hook for plugin and extra fields
                        do_action('edit_user_profile',$current_user); 
                    ?>
                     <?php if ( count($error) > 0 ) echo '<p class="error" style="color: red">' . implode("<br />", $error) . '</p>'; ?>
                    <?php if ( count($correct) > 0 ) echo '<p class="correct" style="color: green">' . implode("<br />", $correct) . '</p>'; ?>

                    <p class="form-submit">
                        <?php echo $referer; ?>
                        <input name="updateuser" type="submit" id="updateuser" class="submit button" value="<?php _e('Update', 'profile'); ?>" />
                        <?php wp_nonce_field( 'update-user' ) ?>
                        <input name="action" type="hidden" id="action" value="update-user" />
                    </p><!-- .form-submit -->
                </form><!-- #adduser -->
            <?php endif; ?>
        </div><!-- .entry-content -->
    </div><!-- .hentry .post -->
    <?php endwhile; ?>
<?php else: ?>
    <p class="no-data">
        <?php _e('Sorry, no page matched your criteria.', 'profile'); ?>
    </p><!-- .no-data -->
<?php endif; 
                    $avia_config['size'] = avia_layout_class( 'main' , false) == 'entry_without_sidebar' ? '' : 'entry_with_sidebar';
                    get_template_part( 'includes/loop', 'page' );
                    ?>

                <!--end content-->
                </main>

                <?php

                //get the sidebar
                $avia_config['currently_viewing'] = 'page';
                get_sidebar();

                ?>

            </div><!--end container-->

        </div><!-- close default .container_wrap element -->



<?php get_footer(); ?>

Is solved.

3 Answers 3

0

I solved the problem. First I check if there are errors and then I add a custom redirect url like this:

if ( count($error) == 0 ) {
     wp_redirect( get_permalink() . '?updated=true' );
}

And finally I added a message using 'GET' method:

<?php if ( $_GET['updated'] == 'true' ) : ?> <p class="form-submit-success" style="color: green">Your profile has been updated</p>
-1

Use this for admin

<div class="updated"><p><strong><?php _e('Total 12 Records Saved.' ); ?></strong>    </p></div>
5
  • Can I include this in my cod and it will work? In which part of my code?
    – Neil
    Aug 27, 2014 at 9:17
  • you can use where your post if condition ends.
    – Racheal
    Aug 27, 2014 at 9:27
  • 1
    Please add an explanation to your answer: why could that solve the problem?
    – fuxia
    Aug 27, 2014 at 9:35
  • well after post the page i uses it in admin to show any message. thats the way it should be.
    – Racheal
    Aug 27, 2014 at 9:37
  • OK. It appears before I click on 'update' button. Why? And What can I do?
    – Neil
    Aug 27, 2014 at 9:54
-2

is this page in front-end or within wp-admin? If the latter you can easily use admin_notices for that:

admin_notices

1
  • In a submit form only. The user front-end
    – Neil
    Aug 27, 2014 at 9:13

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.