Caricamento dell'avatar dal frontend

11 ago 2011, 14:20:51
Visualizzazioni: 16.7K
Voti: 2

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.

2
Commenti

Ho un progetto simile su cui lavorare tra un paio di giorni. Ti farò sapere se trovo qualcosa.

Sisir Sisir
17 ago 2011 11:52:11

Qualcuno ha mai trovato una soluzione per questo?

Nick Budden Nick Budden
9 nov 2011 22:44:46
Tutte le risposte alla domanda 3
8

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 ); ?>
11 ago 2011 19:59:11
Commenti

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

EnexoOnoma EnexoOnoma
12 ago 2011 00:16:25

Prova a usare questo codice con un plugin chiamato user avatar

Bainternet Bainternet
12 ago 2011 00:45:24

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&heigh‌​t=450 che scrive -1 e su rimuovi mi porta a wp-admin/profile.php

EnexoOnoma EnexoOnoma
12 ago 2011 03:49:06

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

EnexoOnoma EnexoOnoma
12 ago 2011 18:40:24

Da dove stai ottenendo la chiamata Ajax, incolla un link

Bainternet Bainternet
12 ago 2011 19:19:25

È 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&heigh‌​‌​t=450 con il valore -1 su di essa.

EnexoOnoma EnexoOnoma
12 ago 2011 20:25:04

conosci una possibile ragione/soluzione per questo?

EnexoOnoma EnexoOnoma
17 ago 2011 04:48:51

a cosa serve l'OB?

Bainternet Bainternet
17 ago 2011 09:17:25
Mostra i restanti 3 commenti
1

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.

15 ago 2011 13:05:19
Commenti

Mi sono imbattuto in questo, ma ho bisogno di farlo senza utilizzare più plugin di avatar. Penso che per funzionare serva anche cimy user extra fields.

EnexoOnoma EnexoOnoma
15 ago 2011 14:37:51
0

Prova questa soluzione che "Fask" ha implementato utilizzando il plugin user-photo.

Scorri in basso e cerca il post di Fask.

17 ago 2011 08:21:14