web-dev-qa-db-fra.com

comment ajouter des fonctionnalités utilisateur personnalisées à l'aide de add_user_meta ou de quelque chose d'autre?

j'ai deux sites WordPress avec SSO Configurations comme décrit ici mais le plugin dans la réponse n'a pas fonctionné pour moi alors j'ai essayé d'écrire un code pour ajouter des fonctionnalités pour les utilisateurs du deuxième site:

 $ wp_user_query = new WP_User_Query (array ('role' => 'author')); 
 $ users = $ wp_user_query-> get_results (); 
 if (! empty ( $ utilisateurs)) {
 pour chaque ($ utilisateurs en tant que $ utilisateur) 
 {
 add_user_meta ($ user-> id, 'orewpst_capabilities', "a: 1: {s: 6 : 'auteur'; b: 1;} ", vrai); 
 add_user_meta ($ user-> id, 'orewpst_user_level', '2', true); 
} 
} 

le problème est que le résultat de sortie pour "a:1:{s:6:'author';b:1;}" est s:23:"a:1:{s:6:'author';b:1;}"

je ne sais pas ce que "s: 23" signifie et pourquoi il apparaît dans la base de données!

update : Je veux que la chaîne "a:1:{s:6:'author';b:1;}" soit stockée dans la base de données sans aucun changement! mais de toute façon mon code ajoute un "s: 23" avant.

2

Essayez de transmettre la valeur sans la sérialiser manuellement, car WordPress le fera quand même pour vous:

add_user_meta( $user->id, 'orewpst_capabilities', array( 'author' => 1 ), true );

ou

update_user_meta( $user->id, 'orewpst_capabilities', array( 'author' => 1 ) ); // it will create the meta data for you if it doesn't exist already.

Le s:23 signifie que vous avez stocké une chaîne de 23 caractères.

J'espère que ça aide!

1
Felipe Elia

C'est vrai que le s:23 est une donnée sérialisée. WordPress stocke automatiquement les données au format sérialisé.

De plus, pour définir les capacités de l'utilisateur, utilisez la fonction add_cap() au lieu de mettre à jour le méta de l'utilisateur. Pour plus de détails, consultez le manuel WordPress les rôles et fonctionnalités de l'utilisateur .

0
maheshwaghmare