Hello i need to add a link in the following code to redirect the (submit button)
Here the code
<form class="checkout adq-billing" enctype="multipart/form-data" action="<?php echo StaticAdqQuoteRequest::get_quote_list_link() ?>" method="post" name="checkout">
<div class="col2-set">
<?php
//Billing/Account information
//, 'is_billing_filled' => $is_billing_filled
adq_get_template( 'adq-form-billing-details.php', array( 'checkout' => StaticAdqQuoteRequest::get_checkout() ) );
?>
<div class="col-2">
<?php
//Force enabled to avoid core Woocommerce system
$shipping->enabled = StaticAdqQuoteRequest::is_shipping_enabled();
//Get Shipping options and address
$shipping->calculate_shipping( WC_Adq()->quote->get_shipping_packages() );
$packages = $shipping->get_packages();
if ( $shipping->enabled ) :
if ( get_option( 'adq_enable_shipping' ) == "user" ) : ?>
<label for="include-shipping-cost">
<?php _e( 'Would you want to include the shipping cost in quotation?', 'woocommerce-quotation' ); ?> <input id="include-shipping-cost" type="checkbox" name="include-shipping-cost" value="1" checked />
</label>
<?php endif;
if ( get_option( 'woocommerce_ship_to_destination' ) != "billing_only" ) :
adq_get_template( 'adq-form-shipping.php', array( 'checkout' => WC()->checkout() ) );
endif;
echo '<div class="adq-shipping">';
foreach ( $packages as $i => $package ) {
$chosen_method = isset( WC()->session->chosen_shipping_methods[ $i ] ) ? WC()->session->chosen_shipping_methods[ $i ] : '';
adq_get_template( 'adq-cart-shipping.php', array( 'package' => $package, 'available_methods' => $package['rates'], 'show_package_details' => ( sizeof( $packages ) > 1 ), 'index' => $i, 'chosen_method' => $chosen_method ) );
};
echo '</div>';
endif;
?>
<p id="quote_comments_field" class="form-row notes woocommerce-validated">
<label class="" for="order_comments"><?php echo __('Message','woocommerce-quotation') ?></label>
<textarea cols="5" rows="2" placeholder="<?php echo __('Please Any other requirements.','woocommerce-quotation') ?>" id="order_comments" class="input-text" name="order_comments" required></textarea>
</p>
</div>
</div>
<?php if ( wc_get_page_id( 'terms' ) > 0 && apply_filters( 'adq_checkout_show_terms', true ) ) : ?>
<p class="form-row terms">
<label for="terms" class="checkbox"><?php printf( __( 'I’ve read and accept the terms & conditions', 'woocommerce-quotation' ), esc_url( get_permalink( wc_get_page_id( 'terms' ) ) ) ); ?></label>
<input type="checkbox" class="input-checkbox" name="terms" <?php checked( apply_filters( 'woocommerce_terms_is_checked_default', isset( $_POST['terms'] ) ), true ); ?> id="terms" />
</p>
<?php endif; ?>
<input type="submit" data-value="<?php echo __('Submit Quote Request','woocommerce-quotation') ?>" value="<?php echo __('Submit','woocommerce-quotation') ?>" id="quote_place_order" name="adq_quote_place_order" class="button alt">
<a class="button wc-backward return-to-shop" href="http://localhost/test"><?php _e( 'Go Back', 'woocommerce-quotation' ) ?></a>
<input type="hidden" name="_wpnonce" value="<?php echo wp_create_nonce('woocommerce-process_checkout'); ?>">
</form>
#############################################################
I have added a link and it works but the form was not submitted, is there's any way to submit a form with url redirection, view code
The tag <input type="submit" /> is used to submit a form.
You will find that this INPUT is inside a <form action=""> tag. action="" is the path the form will be submit to.
If you don't need to submit the form, simply use a tag <a></a>.
<a href="#your-link.php" id="quote_place_order" name="adq_quote_place_order" class="button alt">
<?php echo __('Submit','woocommerce-quotation') ?>
</a>
You need a Form tag so you could add an action attribute to that. Now by clicking the submit button your form will be redirected to the URL that u assigned to the form.
<form action="site.com">
<input type="submit">
</form>
Related
I am using a custom code to split woocommerce login and register forms by using the below code. Everything is working expect i am not getting error messages on login form.
If i type wrong login details i am not getting any error messages.thank you.
i have used this code but it is not working.
<?php do_action( 'woocommerce_before_customer_login_form' ); ?>
/** start code to split login and register form*/
/**
* #snippet WooCommerce User Registration Shortcode
* #how-to Get CustomizeWoo.com FREE
* #author Rodolfo Melogli
* #compatible WooCommerce 6
* #donate $9 https://businessbloomer.com/bloomer-armada/
*/
add_shortcode( 'wc_reg_form_bbloomer', 'bbloomer_separate_registration_form' );
function bbloomer_separate_registration_form() {
if ( is_admin() ) return;
if ( is_user_logged_in() ) return;
ob_start();
do_action( 'woocommerce_before_customer_login_form' );
// NOTE: THE FOLLOWING <FORM></FORM> IS COPIED FROM woocommerce\templates\myaccount\form-login.php
// IF WOOCOMMERCE RELEASES AN UPDATE TO THAT TEMPLATE, YOU MUST CHANGE THIS ACCORDINGLY
?>
<form method="post" class="woocommerce-form woocommerce-form-register register" <?php do_action( 'woocommerce_register_form_tag' ); ?> >
<?php do_action( 'woocommerce_register_form_start' ); ?>
<?php if ( 'no' === get_option( 'woocommerce_registration_generate_username' ) ) : ?>
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="reg_username"><?php esc_html_e( 'Username', 'woocommerce' ); ?> <span class="required">*</span></label>
<input type="text" class="woocommerce-Input woocommerce-Input--text input-text" name="username" id="reg_username" autocomplete="username" value="<?php echo ( ! empty( $_POST['username'] ) ) ? esc_attr( wp_unslash( $_POST['username'] ) ) : ''; ?>" /><?php // #codingStandardsIgnoreLine ?>
</p>
<?php endif; ?>
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="reg_email"><?php esc_html_e( 'Email address', 'woocommerce' ); ?> <span class="required">*</span></label>
<input type="email" class="woocommerce-Input woocommerce-Input--text input-text" name="email" id="reg_email" autocomplete="email" value="<?php echo ( ! empty( $_POST['email'] ) ) ? esc_attr( wp_unslash( $_POST['email'] ) ) : ''; ?>" /><?php // #codingStandardsIgnoreLine ?>
</p>
<?php if ( 'no' === get_option( 'woocommerce_registration_generate_password' ) ) : ?>
<p class="woocommerce-form-row woocommerce-form-row--wide form-row form-row-wide">
<label for="reg_password"><?php esc_html_e( 'Password', 'woocommerce' ); ?> <span class="required">*</span></label>
<input type="password" class="woocommerce-Input woocommerce-Input--text input-text" name="password" id="reg_password" autocomplete="new-password" />
</p>
<?php else : ?>
<p><?php esc_html_e( 'A password will be sent to your email address.', 'woocommerce' ); ?></p>
<?php endif; ?>
<?php do_action( 'woocommerce_register_form' ); ?>
<p class="woocommerce-FormRow form-row">
<?php wp_nonce_field( 'woocommerce-register', 'woocommerce-register-nonce' ); ?>
<button type="submit" class="woocommerce-Button woocommerce-button button woocommerce-form-register__submit" name="register" value="<?php esc_attr_e( 'Register', 'woocommerce' ); ?>"><?php esc_html_e( 'Register', 'woocommerce' ); ?></button>
</p>
<?php do_action( 'woocommerce_register_form_end' ); ?>
</form>
<?php
return ob_get_clean();
}
/**
* #snippet WooCommerce User Login Shortcode
* #how-to Get CustomizeWoo.com FREE
* #author Rodolfo Melogli
* #compatible WooCommerce 6
* #donate $9 https://businessbloomer.com/bloomer-armada/
*/
add_shortcode( 'wc_login_form_bbloomer', 'bbloomer_separate_login_form' );
function bbloomer_separate_login_form() {
if ( is_admin() ) return;
if ( is_user_logged_in() ) return;
ob_start();
woocommerce_login_form( array( 'redirect' => '/my-account' ) );
return ob_get_clean();
}
/** end code to split login and register form*/
need help to solve this issue..thanks in advance
The site I am facing an issue with is https://919kicks.com/product-category/sneakers/adidas/.
Here, if you try to filter by size on the left side and select one, then it works fine. But then if I select another filter (you'll notice the number of filters reduces and even vanishes) also the number of products remains the same as previous filter.
I thought initially its due to price filter min and max value, so I did a modification like:
<form method="get" action="<?php echo esc_url( $form_action ); ?>">
<div class="price_slider_wrapper">
<div class="price_slider" style="display:none;"></div>
<div class="price_slider_amount" data-step="<?php echo esc_attr( $step ); ?>">
<input type="text" id="min_price" name="min_price" value="0" data-min="0" placeholder="<?php echo esc_attr__( 'Min price', 'woocommerce' ); ?>" />
<input type="text" id="max_price" name="max_price" value="50000" data-max="50000" placeholder="<?php echo esc_attr__( 'Max price', 'woocommerce' ); ?>" />
<?php /* translators: Filter: verb "to filter" */ ?>
<button type="submit" class="button"><?php echo esc_html__( 'Filter', 'woocommerce' ); ?></button>
<div class="price_label" style="display:none;">
<?php echo esc_html__( 'Price:', 'woocommerce' ); ?> <span class="from"></span> — <span class="to"></span>
</div>
<?php echo wc_query_string_form_fields( null, array( 'min_price', 'max_price', 'paged' ), '', true ); ?>
<div class="clear"></div>
</div>
</div>
</form>
If you notice in the form, I've changed the min_price value to 0 and the max_price value to 50000, but it does not work.
Thank you in advance!
I was wondering if there is any chance to change the radio button into a normal button like the one that says "Ask Question" on the Stack Overflow main page.
I'm using woocommerce with deposit - partial payment plugin. The plugin has 2 options, some kind of bar with DEPOSIT and FULL PAYMENT option and the second with radio buttons for the same options.
<?php _e( $deposit_option_text, 'woocommerce-deposits' ); ?>
<span id='deposit-amount'><?php echo $deposit_amount; ?></span>
<span id='deposit-suffix'><?php echo $suffix; ?></span><br><br>
</label>
<div class="<?php echo $basic_buttons ? 'basic-switch-woocommerce-deposits' : 'deposit-options switch-toggle switch-candy switch-woocommerce-deposits'; ?>">
<input id='pay-deposit' name='<?php echo $product->get_id(); ?>-deposit-radio'
type='radio' <?php checked($default_checked ,'deposit'); ?> class='input-radio' value='deposit'>
<label id="pay-deposit-label" for='pay-deposit'
onclick=''><?php _e( $deposit_text , 'woocommerce-deposits' ); ?></label>
<?php if( isset( $force_deposit ) && $force_deposit === 'yes' ){ ?>
<input id='pay-full-amount' name='<?php echo $product->get_id(); ?>-deposit-radio' type='radio'
class='input-radio'
disabled>
<label id="pay-full-amount-label" for='pay-full-amount'
onclick=''><?php _e( $full_text , 'woocommerce-deposits' ); ?></label>
<?php } else{ ?>
<input id='pay-full-amount' name='<?php echo $product->get_id(); ?>-deposit-radio'
type='radio' <?php checked($default_checked ,'full'); ?> class='input-radio' value='full'>
<label id="pay-full-amount-label" for='pay-full-amount'
onclick=''><?php _e( $full_text , 'woocommerce-deposits' ); ?></label>
<?php } ?>
Any idea how to change the 2 radio buttons into regular buttons?
So having trouble getting a file uploaded via the front end and actually saving properly.
Funny thing is when I go through the back end user panel it works just fine.
Worth noting this is all on my localhost, running MAMP (apache).
I made sure to include the right files and declare the enctype for the form. I managed to get plain text fields to save just fine. I think I am messing up this part:
if ( !empty( $_POST['map_pdf'] ) )
update_user_meta( $current_user->ID, 'map_pdf', wp_handle_upload( $_POST['map_pdf'], array( 'test_form' => false ) ));
I have seen several other solutions but this is to be displayed in with the users information.
These are the errors I am running into:
Illegal string offset 'size' in /wp-admin/includes/file.php on line 272
File is empty. Please upload something more substantial.
This error could also be caused by uploads being disabled in your php.ini
or by post_max_size being defined as smaller than upload_max_filesize in php.ini.
Profile Page
<?php
/**
* 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' );
include_once ABSPATH . 'wp-admin/includes/media.php';
include_once ABSPATH . 'wp-admin/includes/file.php';
include_once ABSPATH . 'wp-admin/includes/image.php';
$error = 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'] ) )
wp_update_user( array ('ID' => $current_user->ID, 'user_url' => esc_attr( $_POST['url'] )));
if ( !empty( $_POST['email'] ) ){
if (!is_email(esc_attr( $_POST['email'] )))
$error[] = __('The Email you entered is not valid. please try again.', 'profile');
elseif(email_exists(esc_attr( $_POST['email'] )) != $current_user->id )
$error[] = __('This email is already used by another user. try a different one.', 'profile');
else{
wp_update_user( array ('ID' => $current_user->ID, 'user_email' => esc_attr( $_POST['email'] )));
}
}
$r = get_user_meta( $user->ID, 'map_pdf', true );
if ( !empty( $_POST['first-name'] ) )
update_user_meta( $current_user->ID, 'first_name', esc_attr( $_POST['first-name'] ) );
if ( !empty( $_POST['last-name'] ) )
update_user_meta($current_user->ID, 'last_name', esc_attr( $_POST['last-name'] ) );
if ( !empty( $_POST['display_name'] ) )
wp_update_user(array('ID' => $current_user->ID, 'display_name' => esc_attr( $_POST['display_name'] )));
update_user_meta($current_user->ID, 'display_name' , esc_attr( $_POST['display_name'] ));
if ( !empty( $_POST['description'] ) )
update_user_meta( $current_user->ID, 'description', esc_attr( $_POST['description'] ) );
if ( !empty( $_POST['map_pdf'] ) )
update_user_meta( $current_user->ID, 'map_pdf', wp_handle_upload( $_POST['map_pdf'], array( 'test_form' => false ) ));
/* 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 ) {
//action hook for plugins and extra fields saving
do_action('edit_user_profile_update', $current_user->ID);
wp_redirect( get_permalink().'?updated=true' ); exit;
}
}
?>
<?php get_template_part('templates/header'); ?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<div class="contentarea tk-proxima-nova">
<div class="thecontent">
<h3>Update Information for "<?php echo $current_user->user_login ?>"</h3></br>
<?php if ( $_GET['updated'] == 'true' ) : ?> <div id="message" class="updated"><p>Your profile has been updated.</p></div> <?php endif; ?>
<?php if ( count($error) > 0 ) echo '<p class="error">' . implode("<br />", $error) . '</p>'; ?>
<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 : ?>
<?php if ( count($error) > 0 ) echo '<p class="error">' . implode("<br />", $error) . '</p>'; ?>
<form method="post" id="adduser" action="<?php the_permalink(); ?>">
<p class="form-username">
<label for="first-name"><?php _e('First Name', 'profile'); ?></label>
<input class="text-input" name="first-name" type="text" id="first-name" value="<?php the_author_meta( 'first_name', $current_user->ID ); ?>" />
</p><!-- .form-username -->
<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 *', 'profile'); ?></label>
<input class="text-input" name="email" type="text" id="email" 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);
?>
<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 -->
</div><!-- .hentry .post -->
</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; ?>
<?php get_template_part('templates/footer'); ?>
And here is the functions.php
add_action( 'show_user_profile', 'extra_user_profile_fields' );
add_action( 'edit_user_profile', 'extra_user_profile_fields' );
function extra_user_profile_fields( $user ) {
$r = get_user_meta( $user->ID, 'map_pdf', true );
?>
<h3>file</h3>
<table class="form-table">
<tr>
<th scope="row">file</th>
<td><input type="file" name="map_pdf" value="" />
<?php //print_r($r);
if (!isset($r['error'])) {
$r = $r['url'];
echo $r;
} else {
$r = $r['error'];
echo $r;
}
?>
</td>
</tr>
</table>
<?php
}
add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );
function save_extra_user_profile_fields( $user_id ) {
$_POST['action'] = 'wp_handle_upload';
if( $_FILES['map_pdf']['error'] === UPLOAD_ERR_OK ) {
$r = wp_handle_upload( $_FILES['map_pdf'] );
update_user_meta( $user_id, 'map_pdf', $r );
}
}
add_action('user_edit_form_tag', 'make_form_accept_uploads');
function make_form_accept_uploads() {
echo ' enctype="multipart/form-data"';
}
Any help is much appreciated. I have been looking everywhere and I have seen others with similar issues but none that are as specific as mine by pulling the userID and having it post back to the user page.
I have a problem with this line just checking exists(1) vs current_user->ID:
elseif(email_exists(esc_attr( $_POST['email'] )) != $current_user->id )
$error[] = __('This email is already used by another user. try a different one.', 'profile');
Would you want to do this?
$current_user_id = $current_user->ID;
$post_email = $_POST['email'];
$esc_email = esc_attr($post_email);
$email_exists = email_exists($esc_email);
$user_by_email = get_user_by( 'email', $esc_email );
$email_user_id = isset($user_by_email->data->ID) ? $user_by_email->data->ID : 0;
}elseif( $email_user_id && ($email_user_id != $current_user_id) ){
$error[] = __('This email is already used by another user. try a different one.', 'profile')
I am looking for a wordpress plugin where when the user registers it creates their own profile where the user will have their own personal area.
Can anyone point to any?
Thanks
I think it's easier not to use a plugin. With a couple of lines on your functions.php you can get the work done. I assume you are trying to get the users to sign-up on the front page. See if you can get something from this code.
<?php
/**
* Template Name: Register Page
*
*/
/* Load registration file. */
require_once( ABSPATH . WPINC . '/registration.php' );
/* Check if users can register. */
$registration = get_option( 'users_can_register' );
/* If user registered, input info. */
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == 'adduser' ) {
$user_pass = wp_generate_password();
$userdata = array(
'user_pass' => $user_pass,
'user_login' => esc_attr( $_POST['user_name'] ),
'first_name' => esc_attr( $_POST['first_name'] ),
'last_name' => esc_attr( $_POST['last_name'] ),
'nickname' => esc_attr( $_POST['nickname'] ),
'user_email' => esc_attr( $_POST['email'] ),
'user_url' => esc_attr( $_POST['website'] ),
'aim' => esc_attr( $_POST['aim'] ),
'yim' => esc_attr( $_POST['yim'] ),
'jabber' => esc_attr( $_POST['jabber'] ),
'description' => esc_attr( $_POST['description'] ),
'role' => get_option( 'default_role' ),
);
if ( !$userdata['user_login'] )
$error = __('A username is required for registration.', 'frontendprofile');
elseif ( username_exists($userdata['user_login']) )
$error = __('Sorry, that username already exists!', 'frontendprofile');
elseif ( !is_email($userdata['user_email'], true) )
$error = __('You must enter a valid email address.', 'frontendprofile');
elseif ( email_exists($userdata['user_email']) )
$error = __('Sorry, that email address is already used!', 'frontendprofile');
else{
$new_user = wp_insert_user( $userdata );
wp_new_user_notification($new_user, $user_pass);
update_usermeta( $new_user, 'twitter', esc_attr( $_POST['twitter'] ) );
update_usermeta( $new_user, 'birth', esc_attr( $_POST['birth'] ) );
update_usermeta( $new_user, 'hobbies', $_POST['hobbies'] );
update_usermeta( $new_user, 'agree', esc_attr( $_POST['agree'] ) );
}
}
// calling the header.php
get_header();
// action hook for placing content above #container
//thematic_abovecontainer();
?>
<div style="width:970px; height:32px; margin-bottom:10px; clear:both;"><img src="<?php bloginfo('template_url');?>/images/allNarutal_organicTea.png" title="All Natural, Organic Rooibos Tea" > </div>
<div id="products_page">
<div id="registration">
<?php
// calling the widget area 'page-top'
the_post();
?>
<div id="post-<?php the_ID(); ?>">
<?php
// creating the post header
// thematic_postheader();
?>
<div class="entry-content">
<?php
the_content();
wp_link_pages("\t\t\t\t\t<div class='page-link'>".__('Pages: ', 'thematic'), "</div>\n", 'number');
edit_post_link(__('Edit', 'thematic'),'<span class="edit-link">','</span>') ?>
</div>
</div><!-- .post -->
<!-- REGISTER FORM STARTS HERE -->
<?php if ( is_user_logged_in() && !current_user_can( 'create_users' ) ) : ?>
<p class="log-in-out alert">
<?php printf( __('You are logged in as %2$s. You don\'t need another account.', 'frontendprofile'), get_author_posts_url( $curauth->ID ), $user_identity ); ?> <?php _e('Logout »', 'frontendprofile'); ?>
</p><!-- .log-in-out .alert -->
<?php elseif ( $new_user ) : ?>
<p class="alert">
<?php
if ( current_user_can( 'create_users' ) )
printf( __('A user account for %1$s has been created.', 'frontendprofile'), $_POST['user-name'] );
else
printf( __('Thank you for registering, %1$s.', 'frontendprofile'), $_POST['user-name'] );
printf( __('<br/>Please check your email address. That\'s where you\'ll recieve your login password.<br/> (It might go into your spam folder)', 'frontendprofile') );
?>
</p><!-- .alert -->
<?php else : ?>
<?php if ( $error ) : ?>
<p class="error">
<?php echo $error; ?>
</p><!-- .error -->
<?php endif; ?>
<?php if ( current_user_can( 'create_users' ) && $registration ) : ?>
<p class="alert">
<?php _e('Users can register themselves or you can manually create users here.', 'frontendprofile'); ?>
</p><!-- .alert -->
<?php elseif ( current_user_can( 'create_users' ) ) : ?>
<p class="alert">
<?php _e('Users cannot currently register themselves, but you can manually create users here.', 'frontendprofile'); ?>
</p><!-- .alert -->
<?php endif; ?>
<?php if ( $registration || current_user_can( 'create_users' ) ) : ?>
<form method="post" id="adduser" class="user-forms" action="http://<?php echo $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI']; ?>">
<strong>Name</strong>
<p class="form-username">
<label for="user_name"><?php _e('Username (required)', 'frontendprofile'); ?></label>
<input class="text-input" name="user_name" type="text" id="user_name" value="<?php if ( $error ) echo wp_specialchars( $_POST['user_name'], 1 ); ?>" />
</p><!-- .form-username -->
<p class="first_name">
<label for="first_name"><?php _e('First Name', 'frontendprofile'); ?></label>
<input class="text-input" name="first_name" type="text" id="first_name" value="<?php if ( $error ) echo wp_specialchars( $_POST['first_name'], 1 ); ?>" />
</p><!-- .first_name -->
<p class="last_name">
<label for="last_name"><?php _e('Last Name', 'frontendprofile'); ?></label>
<input class="text-input" name="last_name" type="text" id="last_name" value="<?php if ( $error ) echo wp_specialchars( $_POST['last_name'], 1 ); ?>" />
</p><!-- .last_name -->
<p class="nickname">
<label for="nickname"><?php _e('Nickname', 'frontendprofile'); ?></label>
<input class="text-input" name="nickname" type="text" id="nickname" value="<?php if ( $error ) echo wp_specialchars( $_POST['nickname'], 1 ); ?>" />
</p><!-- .nickname -->
<strong>Contact Info</strong>
<p class="form-email">
<label for="email"><?php _e('E-mail (required)', 'frontendprofile'); ?></label>
<input class="text-input" name="email" type="text" id="email" value="<?php if ( $error ) echo wp_specialchars( $_POST['email'], 1 ); ?>" />
</p><!-- .form-email -->
<p class="form-website">
<label for="website"><?php _e('Website', 'frontendprofile'); ?></label>
<input class="text-input" name="website" type="text" id="website" value="<?php if ( $error ) echo wp_specialchars( $_POST['website'], 1 ); ?>" />
</p><!-- .form-website -->
<p class="form-aim">
<label for="aim"><?php _e('AIM', 'frontendprofile'); ?></label>
<input class="text-input" name="aim" type="text" id="aim" value="<?php if ( $error ) echo wp_specialchars( $_POST['aim'], 1 ); ?>" />
</p><!-- .form-aim -->
<p class="form-yim">
<label for="yim"><?php _e('Yahoo IM', 'frontendprofile'); ?></label>
<input class="text-input" name="yim" type="text" id="yim" value="<?php if ( $error ) echo wp_specialchars( $_POST['yim'], 1 ); ?>" />
</p><!-- .form-yim -->
<p class="form-jabber">
<label for="jabber"><?php _e('Jabber / Google Talk', 'frontendprofile'); ?></label>
<input class="text-input" name="jabber" type="text" id="jabber" value="<?php if ( $error ) echo wp_specialchars( $_POST['jabber'], 1 ); ?>" />
</p><!-- .form-jabber -->
<strong>About Yourself</strong>
<p class="form-description">
<label for="description"><?php _e('Biographical Info', 'frontendprofile'); ?></label>
<textarea class="text-input" name="description" id="description" rows="5" cols="30"><?php if ( $error ) echo wp_specialchars( $_POST['description'], 1 ); ?></textarea>
</p><!-- .form-description -->
<p class="form-submit">
<?php echo $referer; ?>
<input name="adduser" type="submit" id="addusersub" class="submit button" value="<?php if ( current_user_can( 'create_users' ) ) _e('Add User', 'frontendprofile'); else _e('Register', 'frontendprofile'); ?>" />
<?php wp_nonce_field( 'add-user' ) ?>
<input name="action" type="hidden" id="action" value="adduser" />
</p><!-- .form-submit -->
</form><!-- #adduser -->
<?php endif; ?>
<?php endif; ?>
<!-- REGISTER FORM ENDS HERE -->
</div><!-- #content -->
</div><!-- #container -->
<?php
// action hook for placing content below #container
// thematic_belowcontainer();
// calling the standard sidebar
// thematic_sidebar();
// calling footer.php
get_footer();
There is also the Cimy User Extra Fields plugin:
Official Site and Documentation
WordPress Plugin Repository Version
It's a bit more weighty than Vezu's solution, but if you prefer a plugin, it may be the way to go.
Consider using BuddyPress. Not sure you need all its power though.