Skapa dina egna WordPress-användarkontaktfält

Idag skapade jag ett nytt plugin för dig. En plugin som behandlar användarnas kontaktmetoder. I grund och botten när du redigerar en användare i administrationen finns det ett “kontaktinformation” -block. Tja, jag skulle vilja visa dig hur du lägger till dina egna fält där, och för att gå lite längre, hur du ska visa (eller inte) dessa nya fält på registreringssidan.


Här är en förhandsgranskning av vad vi ska skapa:

redigera-anpassade-fält

Nya användarfält på redigeringssidan

Anpassade fält

Anpassade fält på registreringssidan

Och för att göra det, som vanligt, kommer vi att skapa en trevlig och enkel plugin!

Steg 1: Skapa plugin

Skapa en ny mapp i wp-content / plugins och kalla den “anpassade-användar-kontakt-metoder”. Inuti den nyskapade mappen, skapa en fil som heter “rc-custom-user-contact-method.php” och öppna den i ditt favoritredigeringsprogram.

Placera detta innehåll i din tomma fil. Den här koden registrerar helt enkelt plugin:

Steg 2: Definiera dina anpassade fält

Därefter måste vi skapa en variabel som kommer att innehålla våra anpassade fält, de som ska användas på sidan med användarutgåvor och även på registreringssidan. Låt oss lagra dessa fält i en variabel som heter $ extra_fields.

$ extra_fields = array (
array ('facebook', __ ('Facebook-användarnamn', 'rc_cucm'), sant),
array ('twitter', __ ('Twitter-användarnamn', 'rc_cucm'), sant),
array ('googleplus', __ ('Google+ ID', 'rc_cucm'), sant),
array ('linkedin', __ ('Linked In ID', 'rc_cucm'), falsk),
array ('pinterest', __ ('Pinterest Användarnamn', 'rc_cucm'), falsk),
array ('wordpress', __ ('WordPress.org Användarnamn', 'rc_cucm'), falsk),
array ('telefon', __ ('Telefonnummer', 'rc_cucm'), sant)
);

Vi lagrar varje fält i en matris som har 3 parametrar, det första är fält-ID, det andra är fältetiketten och det sista är en boolesisk information som definierar om fältet visas på registreringssidan eller inte . Du kan lägga till så många parametrar du vill, till exempel en platshållare eller en nödvändig information.

Steg 3: Haka rätt filter

Vi måste nu ansluta en funktion till rätt filter. I vårt specifika fall är filtret "user_contactmethods", och namnet på den funktion vi ska skapa är "rc_add_user_contactmethods".

// Använd user_contactmethods för att lägga till nya fält
add_filter ('user_contactmethods', 'rc_add_user_contactmethods');

Steg 4: Skapa våra anpassade fält

Vi måste nu skapa funktionen “rc_add_user_contactmethods”. Det är den som kommer att lägga till våra anpassade fält på användarredigeringssidan. Den goda nyheten är att vi lagrade våra fält i en matris, det betyder att följande funktion kommer att vara fullt dynamisk, och det kommer att vara ganska enkelt att lägga till nya fält bara genom att ändra variabeln $ extra_fields.

/ **
* Lägg till anpassade användare anpassade kontaktmetoder
*
* @ tillgång offentligt
* @since 1.0
* @ return ogiltig
* /
funktion rc_add_user_contactmethods ($ user_contactmethods) {

// Hämta fält
globala $ extra_fields;

// Visa varje fält
förhand ($ extra_fields som $ field) {
if (! isset ($ contactmethods [$ field [0]]))
$ user_contactmethods [$ field [0]] = $ field [1];
}

// Returnerar kontaktmetoderna
returnera $ user_contactmethods;
}

I det här steget, om du sparar och aktiverar plugin, bör du se dina anpassade fält på användarredigeringssidan. Eftersom vi använder rätt krok, behöver vi inte skapa en "spara" fältinformation. Så, plugin fungerar bra för tillfället. Men jag skulle vilja gå lite längre och lägga till alternativet för att visa dessa fält på registreringssidan. Se till att du markerar kryssrutan "Vem som helst kan registrera" under inställningarna, annars kan du inte se länken "Registrera".

Steg 5: Registreringssidan krokar

För att lägga till våra fält på registreringssidan måste vi få åtkomst till minst två krokar och skapa två funktioner. En för att visa fälten, och den andra för att spara fältdata i databasen.

Låt oss ansluta våra funktioner:

// Lägg till våra fält i registreringsprocessen
add_action ('register_form', 'rc_register_form_display_extra_fields');
add_action ('user_register', 'rc_user_register_save_extra_fields', 100);

Steg 6: Visa anpassningsfältets registreringssida

I koden ovan förklarade vi två funktioner. Den första är att visa fälten på registreringssidan. I den här delen måste vi ta hand om den tredje parametern för varje matris i $ extra_fields. Denna booleska parameter anger om fälten måste visas eller inte. Sant: fältet visas, falskt: fältet visas inte.

/ **
* Visa anpassade fält på registreringssidan
*
* Visa anpassade fält vid registrering om fältets tredje parameter är satt till true
*
* @ tillgång offentligt
* @since 1.0
* @ return ogiltig
* /
funktion rc_register_form_display_extra_fields () {

// Hämta fält
globala $ extra_fields;

// Visa varje fält om den tredje parametern är inställd på "sant"
förhand ($ extra_fields som $ field) {
if ($ -fält [2] == true) {
$ field_value = isset ($ _POST [$ field [0]])? $ _POST [$ field [0]]: '';
echo '

'; } // endif } // slutförfrågan }

Steg 7: Lagra fältvärden vid registreringsprocessen

Nu när våra fält visas på registreringssidan behöver vi lagra deras värden i databasen. Detta är syftet med funktionen "rc_user_register_save_extra_fields". För att göra det måste vi använda "wp_update_user ()”Funktion.

/ **
* Spara fältvärden
*
* @ tillgång offentligt
* @since 1.0
* @ return ogiltig
* /
funktion rc_user_register_save_extra_fields ($ user_id, $ password = '', $ meta = array ()) {

// Hämta fält
globala $ extra_fields;

$ userdata = array ();
$ userdata ['ID'] = $ user_id;

// Spara varje fält
förhand ($ extra_fields som $ field) {
if ($ -fält [2] == true) {
$ userdata [$ field [0]] = $ _POST [$ field [0]];
} // endif
} // slutförfrågan

$ new_user_id = wp_update_user ($ userdata);
}

Slutsats

Vi såg grunderna i hur man lägger till nya fält till användarkontaktmetoderna, men det är allt. Du kan till exempel ta bort befintliga fält som “Yahoo IM”, “AIM” och “Jabber” genom att göra en enkel återställning (). Men du kan också lägga till några funktioner för att sanera dina anpassade fält för att kontrollera till exempel om telefonnumret har ett lämpligt format, om ett fält krävs eller inte osv osv. ... Tveka inte att be om specifika funktioner i kommentarerna!

Åh, och en sista sak ... om du vill visa data för något av ditt fält, använd det här:

// Param 1 är användar-ID
// Param 2 är fält-ID
// Param 3 är där för att få en var eller en matris
echo get_user_meta (1, 'twitter', sant);  
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me

    Like this post? Please share to your friends:
    Adblock
    detector
    map