Încărcare avatar de pe frontend
În link-ul codepad puteți găsi codul pe care îl folosesc pentru editarea profilului din frontend. http://codepad.org/QJjDEA7p
Codul funcționează (l-am obținut de la Cum să editezi un profil de utilizator pe frontend? și am modificat câteva lucruri pentru a funcționa corect în cazul meu).
Am instalat plugin-ul Simple Local Avatar pentru a permite încărcarea avatarului, dar cum pot modifica codul pentru a avea această funcționalitate și din frontend? Am găsit următoarele, le-am testat, au afișat butonul de upload, dar nu au afișat avatarul curent și nu m-au lăsat să îl schimb.
Vă mulțumesc pentru ajutor în această problemă.
// Acțiuni pentru afișarea și editarea profilului utilizatorului
do_action('show_user_profile');
do_action('edit_user_profile');
// Acțiuni pentru actualizarea profilului
do_action('personal_options_update');
do_action('edit_user_profile_update');
ACTUALIZARE
Ofer un bounty de 50 pentru un exemplu funcțional. Din păcate nu am reușit să fac exemplul lui Bainternet să funcționeze pe care l-am testat și cu plugin-ul User Avatar, și sunt blocat cu această problemă fără să găsesc o soluție.
Ai nevoie doar de aceste cârlige show_user_profile
pentru a afișa câmpurile suplimentare și personal_options_update
pentru actualizare, încearcă:
<?php
ob_start();
include_once("../../../wp-load.php");
get_header();
/* Obține informațiile utilizatorului. */
global $current_user, $wp_roles;
get_currentuserinfo();
/* Încarcă fișierul de înregistrare. */
require_once( ABSPATH . WPINC . '/registration.php' );
/* Dacă profilul a fost salvat, actualizează profilul. */
if ( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] ) && $_POST['action'] == 'update-user' ) {
/* Actualizează parola utilizatorului. */
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 = __('Parolele introduse nu se potrivesc. Parola ta nu a fost actualizată.', 'profile');
}
/* Actualizează informațiile utilizatorului. */
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'] ) );
//câmpuri suplimentare (simple avatare locale ....)
do_action('personal_options_update', $current_user->id);
/* Redirecționează pentru a afișa informațiile actualizate. */
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('Trebuie să fii autentificat pentru a-ți edita profilul.', '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('Prenume', '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('Nume', '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('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-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('Parolă *', 'profile'); ?> </label>
<input class="text-input" name="pass1" type="password" id="pass1" />
</p><!-- .form-password -->
<p class="form-password">
<label for="pass2"><?php _e('Repetă parola *', 'profile'); ?></label>
<input class="text-input" name="pass2" type="password" id="pass2" />
</p><!-- .form-password -->
<p class="form-textarea">
<label for="description"><?php _e('Informații biografice', '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('Actualizează', '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 ); ?>

Bună, am inserat codul dar primesc același comportament ca în întrebarea mea. Afișează silueta misterioasă, butonul de încărcare, nu a afișat avatarul curent și nu m-a lăsat să îl schimb. Folosesc pluginul Simple Local Avatar.

Încearcă să folosești acest cod cu un plugin numit user avatar

Mulțumesc pentru asta, am încercat dar am aceleași rezultate ca înainte. De asemenea, din nu știu ce motiv, când dau click pe update mă duce pe o pagină wp-admin/admin-ajax.php?action=user_avatar_add_photo&step=1&uid=&TB_iframe=true&width=720&height=450 care afișează -1 iar la remove mă duce pe wp-admin/profile.php

Mă lovesc cu capul de perete, am încercat tot dar tot nu reușesc să fac să funcționeze..

Este același link când accesezi prin frontend sau profile.php dar în profile.php se deschide o casetă inline și are opțiunea de a încărca o fotografie. Prin frontend se deschide o pagină nouă wp-admin/admin-ajax.php?action=user_avatar_add_photo&step=1&uid=&TB_iframe=true&width=720&height=450
cu valoarea -1 pe ea.

Poate o altă abordare va funcționa. Am văzut profiluri de utilizatori implementate și funcționale pe front-end undeva folosind plugin-ul Theme My Login (http://wordpress.org/extend/plugins/theme-my-login/) și User Avatar (http://wordpress.org/extend/plugins/user-avatar/);
Puteți găsi mai multe informații aici http://wordpress.org/support/topic/custom-edit-profile-page.

Încearcă această soluție pe care "Fask" a implementat folosind pluginul user-photo.
Derulează în jos și caută postarea lui Fask.
