Opret dine egne WordPress-brugerkontaktfelter

I dag oprettede jeg et nyt plugin til dig. Et plugin, der beskæftiger sig med brugernes kontaktmetoder. Når du redigerer en bruger i administrationen, er der grundlæggende en “kontaktoplysninger” -blok. Nå, jeg vil gerne vise dig, hvordan du tilføjer dine egne felter der, og gå lidt videre, hvordan du viser (eller ikke) disse nye felter på registreringssiden.


Her er en forhåndsvisning af, hvad vi vil oprette:

edit-custom-felter

Nye brugerfelter på redigeringssiden

custom-felter

Tilpassede felter på registreringssiden

Og for at gøre det, som normalt, vil vi oprette en dejlig og enkel plugin!

Trin 1: Opret plugin

Opret en ny mappe i wp-indhold / plugins og kalder det “brugerdefinerede-bruger-kontakt-metoder”. Inde i denne nyoprettede mappe skal du oprette en fil kaldet “rc-custom-user-contact-method.php” og åbne den i din foretrukne editor-software.

Placer dette indhold i din tomme fil. Denne kode registrerer blot plugin:

Trin 2: Definer dine brugerdefinerede felter

Dernæst er vi nødt til at oprette en variabel, der indeholder vores brugerdefinerede felter, dem, der skal bruges på siden med brugerudgaven, og også på registreringssidens side. Lad os gemme disse felter i en variabel kaldet $ extra_fields.

$ extra_fields = matrix (
array ('facebook', __ ('Facebook-brugernavn', 'rc_cucm'), sandt),
array ('twitter', __ ('Twitter-brugernavn', 'rc_cucm'), sandt),
array ('googleplus', __ ('Google+ ID', 'rc_cucm'), sandt),
array ('linkedin', __ ('Linked In ID', 'rc_cucm'), falsk),
array ('pinterest', __ ('Pinterest Brugernavn', 'rc_cucm'), falsk),
array ('wordpress', __ ('WordPress.org brugernavn', 'rc_cucm'), falsk),
array ('telefon', __ ('Telefonnummer', 'rc_cucm'), sandt)
);

Vi lagrer hvert felt inden for en matrix, der har 3 parametre, det første er felt-ID, det andet er feltmærket, og det sidste er en boolsk information, der definerer, om feltet vises på registreringssiden eller ej . Du kan tilføje så mange parametre, som du vil, for eksempel en pladsholder eller en påkrævet information.

Trin 3: Tilslut det rigtige filter

Vi er nu nødt til at koble en funktion til det rigtige filter. I vores specifikke tilfælde er filteret "user_contactmethods", og navnet på den funktion, vi skal oprette, er "rc_add_user_contactmethods".

// Brug user_contactmethods til at tilføje nye felter
add_filter ('user_contactmethods', 'rc_add_user_contactmethods');

Trin 4: Opret vores brugerdefinerede felter

Vi er nu nødt til at oprette funktionen “rc_add_user_contactmethods”. Det er den, der tilføjer vores brugerdefinerede felter til brugerredigeringssiden. Den gode nyhed er, at vi lagrede vores felter i en matrix, det betyder, at følgende funktion vil være fuldt dynamisk, og det vil være temmelig let at tilføje nye felter bare ved at ændre variablen $ extra_fields.

/ **
* Tilføj brugerdefinerede brugertilpassede kontaktmetoder
*
* @ adgang offentligt
* @since 1.0
* @ tilbagevenden ugyldig
* /
funktion rc_add_user_contactmethods ($ user_contactmethods) {

// Hent felter
globale $ ekstra_felter;

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

// Returnerer kontaktmetoderne
returner $ user_contactmethods;
}

Hvis du gemmer og aktiverer plugin på dette trin, skal du se dine brugerdefinerede felter på siden med brugerredigering. Da vi bruger den rigtige krog, behøver vi ikke at oprette "gemte" feltdata. Så plugin fungerer godt i øjeblikket. Men jeg vil gerne gå lidt længere og tilføje muligheden for at vise disse felter på registreringssiden. Sørg for, at du markerer afkrydsningsfeltet "Enhver kan registrere" under indstillinger, ellers vil du ikke kunne se linket "Registrer".

Trin 5: Registrering af sidekroge

For at tilføje vores felter på registreringssiden skal vi få adgang til mindst to kroge og oprette to funktioner. Én til at vise felterne, og den anden til at gemme feltdataene i databasen.

Lad os koble vores funktioner:

// Føj vores felter til registreringsprocessen
add_action ('register_form', 'rc_register_form_display_extra_fields');
add_action ('user_register', 'rc_user_register_save_extra_fields', 100);

Trin 6: Vis registreringsside for brugerdefinerede felter

I koden ovenfor erklærede vi to funktioner. Den første er at vise felterne på registreringssiden. I denne del er vi nødt til at tage os af den tredje parameter i hver array i $ extra_fields. Denne boolske parameter fortæller, om felterne skal vises eller ikke. Sandt: feltet vises, falsk: feltet vises ikke.

/ **
* Vis brugerdefinerede felter på registreringssiden
*
* Vis brugerdefinerede felter ved registrering, hvis felt tredje parameter er indstillet til sand
*
* @ adgang offentligt
* @since 1.0
* @ tilbagevenden ugyldig
* /
funktion rc_register_form_display_extra_fields () {

// Hent felter
globale $ ekstra_felter;

// Vis hvert felt, hvis 3. parameter er indstillet til "sand"
foreach ($ extra_fields som $ field) {
if ($ felt [2] == sandt) {
$ field_value = isset ($ _POST [$ field [0]])? $ _POST [$ felt [0]]: '';
ekko '

'; } // Afslut Hvis } // slut foreach }

Trin 7: Gem feltværdier ved registreringsprocessen

Nu hvor vores felter vises på registreringssiden, har vi brug for at gemme deres værdier i databasen. Dette er formålet med funktionen “rc_user_register_save_extra_fields”. For at gøre det er vi nødt til at bruge "wp_update_user ()”Funktion.

/ **
* Gem feltværdier
*
* @ adgang offentligt
* @since 1.0
* @ tilbagevenden ugyldig
* /
funktion rc_user_register_save_extra_fields ($ user_id, $ password = '', $ meta = array ()) {

// Hent felter
globale $ ekstra_felter;

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

// Gem hvert felt
foreach ($ extra_fields som $ field) {
if ($ felt [2] == sandt) {
$ userdata [$ felt [0]] = $ _POST [$ field [0]];
} // Afslut Hvis
} // slut foreach

$ new_user_id = wp_update_user ($ userdata);
}

Konklusion

Nå, vi så det grundlæggende om, hvordan man tilføjer nye felter til brugerkontaktmetoderne, men det er alt. Du kan f.eks. Fjerne eksisterende felter som “Yahoo IM”, “AIM” og “Jabber” ved at gøre et simpelt ikke-sæt (). Men du kan også tilføje nogle funktioner til at desinficere dine brugerdefinerede felter for at kontrollere for eksempel om telefonnummeret har et passende format, om et felt er påkrævet eller ej osv. Osv.… Tøv ikke med at bede om specifikke funktioner i kommentarerne!

Åh, og en sidste ting ... hvis du vil vise dataene i et af dit felt, skal du blot bruge dette:

// Param 1 er bruger-id
// Param 2 er felt-ID
// Param 3 er der for at få en var eller en matrix
ekko get_user_meta (1, 'twitter', sandt);  
Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me

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