Profil Utilizator / Adăugare Câmpuri Personalizate
Bună: Încerc să adaug 7 câmpuri personalizate la pagina standard Wordpress wp-admin/profile.php. Există câteva site-uri care sugerează un cod simplu pentru asta, de exemplu:
http://wpengineer.com/2173/custom-fields-wordpress-user-profile/
Dar, vreau să pot adăuga câmpurile mele personalizate astfel încât să apară exact sub caseta "Biographical Info" și deasupra câmpului "change password". Tot ce am citit și am încercat plasează câmpurile personalizate la finalul paginii, dar eu vreau să apară între caseta "Biographical Info" și deasupra câmpului "change password".
Cum pot face asta? Este posibil? Implică și folosirea javascript? Vă rog să mă sfătuiți. Mulțumesc.

Nu există o modalitate WordPress standard de a adăuga câmpuri între secțiunea de biografie și cea de parolă a utilizatorului, dar așa cum ai menționat, poți face acest lucru folosind JavaScript. Mai jos este codul care adaugă un singur câmp ca exemplu pentru a-ți arăta cum poți realiza același lucru.
NOTĂ: Codul de mai jos doar afișează câmpurile, dar nu procesează sau salvează informațiile, deoarece acea parte este aceeași ca în articolul menționat în întrebare.
Adăugarea câmpurilor
Puneți codul de mai jos în fișierul functions.php pentru a afișa câmpurile.
function wpse39285_add_custom_user_profile_fields( $user ) {
?>
<table id="custom_user_field_table" class="form-table">
<tr id="custom_user_field_row">
<th>
<label for="custom_field"><?php _e('Câmp', 'your_textdomain'); ?></label>
</th>
<td>
<input type="text" name="custom_field" id="custom_field" value="<?php echo esc_attr( get_the_author_meta( 'custom_field', $user->ID ) ); ?>" class="regular-text" /><br />
<span class="description"><?php _e('Introdu valoarea pentru câmpul personalizat.', 'your_textdomain'); ?></span>
</td>
</tr>
</table>
<?php
}
add_action( 'show_user_profile', 'wpse39285_add_custom_user_profile_fields' );
add_action( 'edit_user_profile', 'wpse39285_add_custom_user_profile_fields' );
Codul de mai sus va plasa câmpurile personalizate după câmpurile de parolă.
Mutarea câmpurilor
Codul de mai jos inserează un script JavaScript în antetul Admin WordPress doar dacă utilizatorul își vizualizează propriul profil sau un administrator editează profilul altcuiva.
function wpse39285_field_placement_js() {
$screen = get_current_screen();
if ( $screen->id != "profile" && $screen->id != "user-edit" )
return;
?>
<script type="text/javascript">
jQuery(document).ready(function($) {
field = $('#custom_user_field_row').remove();
field.insertBefore('#password');
});
</script>
<?php
}
add_action( 'admin_head', 'wpse39285_field_placement_js' );
JavaScript-ul de mai sus va muta câmpul între secțiunea de parolă și cea de biografie. În cazul în care utilizatorul vizualizează pagina dintr-un browser fără suport JavaScript, câmpurile nu vor fi mutate și vor rămâne în poziția lor implicită.
Câmp în browser cu JavaScript activat
Câmp în browser fără suport JavaScript

Mein Rat ist: Versuche nicht, das System zu manipulieren oder zu umgehen. Erstelle Inhalte dort, wo die Kernentwickler es möchten; der Grund, warum du die Felder genau an dieser Stelle haben möchtest, ist wahrscheinlich nicht gut genug, um den normalen WordPress-Ablauf zu umgehen.
Verwende den Action-Hook profile_personal_options
, um einen neuen Abschnitt für die benötigten Einstellungen auf der Seite einzufügen. Dies ist nicht nur technisch einwandfrei, sondern auch verständlicher für Benutzer (die wissen, wie WordPress normalerweise aussieht).

Pentru mine, răspunsul lui Hameedullah Khan a funcționat bine. Am făcut doar o mică corecție deoarece noile câmpuri mi-au afectat aspectul paginii. Așadar, în codul jQuery am adăugat:
jQuery(document).ready(function($) {
field = $('#custom_user_field_row').remove();
field.insertBefore('#password');
$('#custom_user_field_row').wrapAll('<tr><td colspan="2"></td></tr>');
});
pentru a menține alinierea tabelului.

Deoarece nu poți face asta cu adevărat, aș recomanda să folosești plugin-ul Theme My Login, un plugin foarte simplu pentru membri care va crea doar paginile de "autentificare", "deconectare" și "profil" care se vor potrivi cu personalizarea temei tale. Vei putea schimba ordinea câmpurilor după cum dorești într-un fișier separat pe care îl poți adăuga în tema ta copil, astfel încât nu vei avea probleme dacă ceva nu funcționează corect.
Singurul lucru este că profilul tău nu va mai fi vizibil la user-edit.php
ci la your-profile.php
.
