• Hei,
    Hvordan kan vi bedre styre hvordan brukernavn (user_login) blir generert?

    Vi kan ikke ha mellomrom i brukernavn og vil mye heller foretrekke at Vipps-brukere f?r sitt brukernavn mer likt som “user_nicename” (som stort sett kun fremkommer i mysql databasen)

    Hvordan kan vi endre p? m?ten brukernavn blir satt n?r en bruker registrerer seg via Login med Vipps?

Viewing 3 replies - 1 through 3 (of 3 total)
  • Plugin Author Iver Odin Kvello

    (@iverok)

    Det finnes et filter,

    $newusername = apply_filters('continue_with_vipps_create_username', $username, $userinfo,$session);

    – userinfo inneholder da alt av data fra Vipps, og session inneholder dette pluss det som ellers er lagt til der av andre hooks og filtere.

    Det finnes ogs? et annet sett med filtere, som er avhengig av hvilken “applikasjon” du logger inn i, og dette overstyres om du registrerer “i” woocommerce med prioritet 10:

    apply_filters("continue_with_vipps_{$app}_create_username", $username, $userinfo,$session);. S? om du vil overstyre Woo-brukernavn m? du overstyre 'continue_with_vipps_woocommerce_create_username'.

    Husk p? at brukernavnet disse filterne genererer m? v?re unike.

    Ellers s? vil standard-brukernavnet i standard WP v?re basert p? epost-addressen, og for Woo s? vil funksjonen 'wc_create_new_customer_username' bli brukt.

    Thread Starter pivot

    (@pivot)

    Takk for svar!
    Testet litt i perioden jeg spurte her, og fikk det til ? fungere ved ? legge noen filtre over ‘first_name’=>$userinfo[‘given_name’] og ‘last_name’ => $userinfo[‘family_name’] i denne koden i VippsWooLogin.class.php:

    if (function_exists('wc_create_new_customer_username')) {
                $email = $userinfo['email'];
                return wc_create_new_customer_username($email, array('first_name'=>$userinfo['given_name'],  'last_name' =>  $userinfo['family_name']));
            } else {
                return $username;
            }

    Men det ble en s?pass “skitten” l?sning, og som ikke heller ville overlevd en oppdatering s? ble ikke prioritert ? engang spare p?…

    Hvordan g?r jeg frem for ? “overstyre” funksjonen via f.eks. functions.php slik at alle brukernavn som genereres av Vipps ikke inneholder mellomrom?

    Mellomrom kan erstattes av punktum, eller fjernes helt.

    Plugin Author Iver Odin Kvello

    (@iverok)

    Ja, det er ingen god ide ? endre pluginkoden, den vil bli overskrevet ved oppdateringer.

    Hvis du bruker Woo, kan du fjerne mellomrom slik i din functions.php:

    add_filter('continue_with_vipps_woocommerce_create_username',
       function ( $username, $userinfo,$session) {
           $username = str_replace(" ", ".", $username);
           return $username;
       }, 
    100, 3);

    – eller du kan generere ditt eget (ledige) brukernavn med infoen i $userinfo, som da kommer rett fra vipps.

    Hvis du ikke bruker Woo, kan du bruke filteret 'continue_with_vipps_create_username' p? samme m?te.

    Hvis du bruker Woo, s? kan du ogs? bruke filteret
    'woocommerce_new_customer_username', $username, $email, $new_user_args, $suffix

    – det vil p?virke *woocommerce* sin m?te ? lage brukernavn p?, som da vil arves av Vipps.

Viewing 3 replies - 1 through 3 (of 3 total)
  • The topic ‘Hvordan erstatte mellomrom i brukernavn med punktum/strek/lavstrek’ is closed to new replies.