Caricamento dell'avatar dal frontend
Nel link di codepad puoi trovare il codice che sto usando per modificare il profilo dal front-end. http://codepad.org/QJjDEA7p
Il codice funziona (che ho preso da Come modificare un profilo utente dal front end? e ho modificato alcune cose per farlo funzionare correttamente).
Ho installato il plugin Simple Local Avatar per permettere il caricamento degli avatar, ma come posso modificare il codice per avere questa funzionalità anche dal front-end? Ho trovato questi hook qui sotto, che ho testato: mostrava il pulsante di upload, non mostrava l'avatar corrente e non mi permetteva di cambiarlo.
do_action('show_user_profile');
do_action('edit_user_profile');
do_action('personal_options_update');
do_action('edit_user_profile_update');
AGGIORNAMENTO
Offro una bounty di 50 per un esempio funzionante. Purtroppo non riesco a far funzionare l'esempio di Bainternet che ho testato anche con il plugin User Avatar, e sono davvero bloccato su questo problema senza trovare una soluzione.
Hai bisogno solo di questi hook show_user_profile
per mostrare i campi extra e personal_options_update
per aggiornarli, prova:
<?php
ob_start();
include_once("../../../wp-load.php");
get_header();
/* Ottieni informazioni utente. */
global $current_user, $wp_roles;
get_currentuserinfo();
/* Carica il file di registrazione. */
require_once( ABSPATH . WPINC . '/registration.php' );
/* Se il profilo è stato salvato, aggiornalo. */
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == 'update-user' ) {
/* Aggiorna la password utente. */
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 = __('Le password inserite non corrispondono. La password non è stata aggiornata.', 'profile');
}
/* Aggiorna le informazioni utente. */
if ( !empty( $_POST['url'] ) )
update_usermeta( $current_user->id, 'user_url', esc_url( $_POST['url'] ) );
if ( !empty( $_POST['email'] ) )
update_usermeta( $current_user->id, 'user_email', esc_attr( $_POST['email'] ) );
if ( !empty( $_POST['first-name'] ) )
update_usermeta( $current_user->id, 'first_name', esc_attr( $_POST['first-name'] ) );
if ( !empty( $_POST['last-name'] ) )
update_usermeta($current_user->id, 'last_name', esc_attr( $_POST['last-name'] ) );
if ( !empty( $_POST['yim'] ) )
update_usermeta($current_user->id, 'yim', esc_attr( $_POST['yim'] ) );
if ( !empty( $_POST['description'] ) )
update_usermeta( $current_user->id, 'description', esc_attr( $_POST['description'] ) );
//campi extra (avatar locali semplici ....)
do_action('personal_options_update', $current_user->id);
/* Reindirizza per mostrare le info aggiornate. */
if ( !$error ) {
header("Location: ".$_SERVER['PHP_SELF']);
exit;
ob_flush();
}
}
?>
<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('Devi essere loggato per modificare il tuo profilo.', 'profile'); ?>
</p><!-- .warning -->
<?php else : ?>
<?php if ( $error ) echo '<p class="error">' . $error . '</p>'; ?>
<form method="post" id="adduser" action="<?php the_permalink(); ?>">
<p class="form-username">
<label for="first-name"><?php _e('Nome', 'profile'); ?></label>
<input class="text-input" name="first-name" type="text" id="first-name" value="<?php the_author_meta( 'user_firstname', $current_user->id ); ?>" />
</p><!-- .form-username -->
<p class="form-username">
<label for="last-name"><?php _e('Cognome', 'profile'); ?></label>
<input class="text-input" name="last-name" type="text" id="last-name" value="<?php the_author_meta( 'user_lastname', $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('Sito Web', '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-yim">
<label for="yim">yahoo</label>
<input class="text-input" name="yim" type="text" id="yim" value="<?php the_author_meta( 'yim', $current_user->id ); ?>" />
</p><!-- .form-yim -->
<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('Ripeti 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('Informazioni Biografiche', 'profile') ?></label>
<textarea name="description" id="description" rows="3" cols="50"><?php the_author_meta( 'description', $current_user->id ); ?></textarea>
</p><!-- .form-textarea -->
<?php do_action('show_user_profile',$current_user->id); ?>
<p class="form-submit">
<?php echo $referer; ?>
<input name="updateuser" type="submit" id="updateuser" class="submit button" value="<?php _e('Aggiorna', '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 comments_template( '', true ); ?>

Ciao, l'ho incollato ma ottengo lo stesso comportamento della mia domanda. Mostra l'uomo misterioso, il pulsante di caricamento, non mostra l'avatar corrente e non mi permette di cambiarlo. Sto usando il plugin Simple Local Avatar

Prova a usare questo codice con un plugin chiamato user avatar

Grazie per questo, l'ho provato ma ho gli stessi effetti di prima. Inoltre, per qualche motivo, quando clicco su aggiorna mi porta a una pagina wp-admin/admin-ajax.php?action=user_avatar_add_photo&step=1&uid=&TB_iframe=true&width=720&height=450 che scrive -1 e su rimuovi mi porta a wp-admin/profile.php

Mi sto battendo la testa contro il muro, ho provato di tutto ma ancora non riesco a farlo funzionare..

È lo stesso link quando accedi tramite frontend o profile.php ma in profile.php apre una finestra inline e ha l'opzione per caricare una foto. Tramite il frontend apre una nuova pagina wp-admin/admin-ajax.php?action=user_avatar_add_photo&step=1&uid=&TB_iframe=true&width=720&height=450
con il valore -1 su di essa.

Forse un altro approccio potrebbe funzionare. Ho visto profili utente implementati e funzionanti sul front-end da qualche parte utilizzando il plugin Theme My Login (http://wordpress.org/extend/plugins/theme-my-login/) e User Avatar (http://wordpress.org/extend/plugins/user-avatar/);
Puoi trovare maggiori informazioni qui http://wordpress.org/support/topic/custom-edit-profile-page.

Prova questa soluzione che "Fask" ha implementato utilizzando il plugin user-photo.
Scorri in basso e cerca il post di Fask.
