Lag dine egne WordPress-brukerfeltfelt

I dag opprettet jeg en ny plugin for deg. En plugin som omhandler brukernes kontaktmetoder. I utgangspunktet når du redigerer en bruker i administrasjonen, er det en “kontaktinformasjon” -blokk. Vel, jeg vil vise deg hvordan du legger til dine egne felt der, og går litt lenger, hvordan du viser (eller ikke) disse nye feltene på registreringssiden.


Her er en forhåndsvisning av hva vi skal lage:

edit-custom-felt

Nye brukerfelt på redigeringsside

custom-felt

Egendefinerte felt på registreringssiden

Og for å gjøre det, vil vi som vanlig lage en fin og enkel plugin!

Trinn 1: Lag plugin

Lag en ny mappe i wp-content / plugins og kall den “tilpassede bruker-kontakt-metoder”. I denne nyopprettede mappen lager du en fil som heter “rc-custom-user-contact-method.php”, og åpner den i favorittredigeringsprogramvaren..

Plasser dette innholdet i den tomme filen. Denne koden registrerer bare plugin:

Trinn 2: Definer dine tilpassede felt

Deretter må vi lage en variabel som inneholder de egendefinerte feltene våre, de som skal brukes på brukerutgavesiden, og også på standard-siden for registrering. La oss lagre disse feltene i en variabel som heter $ extra_fields.

$ extra_fields = matrise (
matrise ('facebook', __ ('Facebook-brukernavn', 'rc_cucm'), sant),
matrise ('twitter', __ ('Twitter-brukernavn', 'rc_cucm'), sant),
matrise ('googleplus', __ ('Google+ ID', 'rc_cucm'), sant),
matrise ('linkedin', __ ('Linked In ID', 'rc_cucm'), falsk),
matrise ('pinterest', __ ('Pinterest Brukernavn', 'rc_cucm'), falsk),
matrise ('wordpress', __ ('WordPress.org brukernavn', 'rc_cucm'), falsk),
matrise ('telefon', __ ('telefonnummer', 'rc_cucm'), sant)
);

Vi lagrer hvert felt i en gruppe som har 3 parametere, det første er felt-ID, det andre er feltetiketten, og det siste er en boolsk informasjon som definerer om feltet vises på registreringssiden eller ikke . Du kan legge til så mange parametere du vil, for eksempel en plassholder eller en nødvendig informasjon.

Trinn 3: Hekt riktig filter

Vi må nå koble en funksjon til riktig filter. I vårt spesifikke tilfelle er filteret “user_contactmethods”, og navnet på funksjonen vi skal lage er “rc_add_user_contactmethods”.

// Bruk user_contactmethods for å legge til nye felt
add_filter ('user_contactmethods', 'rc_add_user_contactmethods');

Trinn 4: Lag våre tilpassede felt

Vi må nå opprette “rc_add_user_contactmethods” -funksjonen. Det er den som vil legge til de tilpassede feltene våre til brukerredigeringssiden. Den gode nyheten er at vi lagret feltene våre i en matrise, det betyr at følgende funksjon vil være fullt dynamisk, og det vil være ganske enkelt å legge til nye felt bare ved å endre variabelen $ extra_fields.

/ **
* Legg til tilpassede brukere tilpassede kontaktmetoder
*
* @ tilgang offentlig
* @since 1.0
* @ return ugyldig
* /
funksjon rc_add_user_contactmethods ($ user_contactmethods) {

// Få felt
globale $ ekstra_felt;

// Vis hvert felt
foreach ($ extra_fields som $ field) {
if (! isset ($ contactmethods [$ field [0]]))
$ user_contactmethods [$ field [0]] = $ field [1];
}

// Returnerer kontaktmetodene
returner $ user_contactmethods;
}

Hvis du lagrer og aktiverer plugin-modulen, bør du se dine tilpassede felt på brukerredigeringssiden på dette trinnet. Ettersom vi bruker riktig krok, trenger vi ikke å opprette "lagre" feltdata. Så, pluginen fungerer bra for øyeblikket. Men jeg vil gjerne gå litt lenger og legge til alternativet for å vise feltene på registreringssiden. Sørg for at du krysser av for “Alle kan registrere seg” under innstillingene, ellers vil du ikke se linken “Registrer”.

Trinn 5: Registrering av sidekroker

For å legge til feltene våre på registreringssiden, må vi få tilgang til minst to kroker og lage to funksjoner. Det ene for å vise feltene, og det andre for å lagre feltdataene i databasen.

La oss koble til funksjonene våre:

// Legg til feltene våre i registreringsprosessen
add_action ('register_form', 'rc_register_form_display_extra_fields');
add_action ('user_register', 'rc_user_register_save_extra_fields', 100);

Trinn 6: Vis registreringsside for tilpassede felt

I koden over erklærte vi to funksjoner. Den første er å vise feltene på registreringssiden. I denne delen må vi ta vare på den tredje parameteren for hver gruppe i $ extra_fields. Denne boolske parameteren forteller om feltene må vises eller ikke. Sant: feltet vises, usant: feltet vises ikke.

/ **
* Vis tilpassede felt på registreringssiden
*
* Vis egendefinerte felt ved registrering hvis felt tredje parameter er satt til true
*
* @ tilgang offentlig
* @since 1.0
* @ return ugyldig
* /
funksjon rc_register_form_display_extra_fields () {

// Få felt
globale $ ekstra_felt;

// Vis hvert felt hvis den tredje parameteren er satt til "sann"
foreach ($ extra_fields som $ field) {
if ($ felt [2] == true) {
$ field_value = isset ($ _POST [$ field [0]])? $ _POST [$ felt [0]]: '';
ekko '

'; } // slutt om } // slutt foreach }

Trinn 7: Lagre feltverdier ved registreringsprosess

Nå som feltene våre vises på registreringssiden, trenger vi å lagre verdiene deres i databasen. Dette er formålet med funksjonen “rc_user_register_save_extra_fields”. For å gjøre det, må vi bruke "wp_update_user ()”Funksjon.

/ **
* Lagre feltverdier
*
* @ tilgang offentlig
* @since 1.0
* @ return ugyldig
* /
funksjon rc_user_register_save_extra_fields ($ user_id, $ password = '', $ meta = array ()) {

// Få felt
globale $ ekstra_felt;

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

// Lagre hvert felt
foreach ($ extra_fields som $ field) {
if ($ felt [2] == true) {
$ userdata [$ field [0]] = $ _POST [$ field [0]];
} // slutt om
} // slutt foreach

$ new_user_id = wp_update_user ($ userdata);
}

Konklusjon

Vel, vi så det grunnleggende om hvordan du legger til nye felt i brukerkontaktmetodene, men det er alt. Du kan for eksempel fjerne eksisterende felt som “Yahoo IM”, “AIM” og “Jabber” ved å gjøre et enkelt unset (). Men du kan også legge til noen funksjoner for å desinfisere dine tilpassede felt for å sjekke for eksempel om telefonnummeret har et passende format, om et felt er påkrevd eller ikke osv osv. ... Ikke nøl med å be om spesifikke funksjoner i kommentarene!

Å, og en siste ting ... hvis du vil vise dataene til et av feltene dine, kan du bare bruke dette:

// Param 1 er bruker-ID
// Param 2 er felt-ID
// Param 3 er der for å få en var eller en matrise
ekko 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