2016-12-21 1 views
0

J'ai créé un champ personnalisé appelé nom de l'entreprise, et je l'utiliser pour mettre à jour le champ après l'enregistrement de l'utilisateur sur mon habitude page d'inscriptionutilisateurs changement nom d'utilisateur basé sur le champ profil personnalisé

update_usermeta($user_id, 'user_company_name', $company_name); 

et j'insérer les utilisateurs à l'aide de cette Code

  $userdata = array(
       'user_login' => $email, 
       'user_email' => $email, 
       'user_pass' => $random_password, 
       'first_name' => $first_name, 
       'last_name' => $last_name, 
       'role' => $custom_role, 
      ); 

    $user_id = wp_insert_user($userdata); 

ce que je veux faire est de créer le nom d'utilisateur d'utilisateur en fonction de $company_name, je sais qu'il est aussi simple que de changer 'user_login' => $email, à 'user_login' => $company_name, mais les noms d'entreprise sont parfois trop longtemps, y compris symboles, barre oblique, tiret, mots de liaison ... etc, et je veux seulement utiliser les 2 premiers mots divisés par le trait de soulignement ... donc par exemple si le nom de l'entreprise est (The Stack & Overflow), je veux que le nom d'utilisateur devienne stack_overflow.

Existe-t-il un moyen de l'appliquer aux membres actuels?

+0

utiliser l'expression régulière –

Répondre

0

Source: http://php.net/manual/en/function.explode.php

Utilisez la fonction exploser de php voir cet exemple:

<?php 
// Example 1 
$pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; 
$pieces = explode(" ", $pizza); 
echo $pieces[0]; // piece1 
echo $pieces[1]; // piece2 

// Example 2 
$data = "foo:*:1023:1000::/home/foo:/bin/sh"; 
list($user, $pass, $uid, $gid, $gecos, $home, $shell) = explode(":", $data); 
echo $user; // foo 
echo $pass; // * 

?> 
+0

Ce n'est pas corrigé que "" toujours là –

0

supprimer les caractères spéciaux & remplacent l'espace avec _

function removeSpecial($string) 
{ 
    $string = str_replace(' ', '_', $string); // Replaces all spaces with UnderScore. 

    return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars. 
} 

fonction d'appel:

echo removeSpecial("stack & Overflow"); 

D'abord, nous remplaçons le trait de soulignement par de l'espace, puis supprimons le caractère spécial de la chaîne.

+0

Eh bien, comment puis-je utiliser exactement le code ci-dessus et limiter le nombre de mots à 2? –

+0

@Ali_k vous pouvez dire que le mot commence par l'espace droit –

+0

désolé je n'ai pas compris, disons que je vais utiliser ce '$ company_name = $ cp_name;' le nom de l'entreprise est "pile et débordement avec la société X" Je viens de Je veux qu'il renvoie stack_overflow dans la variable '$ cp_name' –