Cuál es el significado del campo wp_capabilities en la tabla wp_usermeta

19 jun 2013, 16:07:14
Vistas: 35.9K
Votos: 11

Soy nuevo en WordPress, en la tabla wp_usermeta noto que tenemos una fila

meta_key                meta_value
wp_capabilities       a:1:{s:13:"administrator";b:1;}

Primero, ¿cuál es el significado del meta_value a:1:{s:13:"administrator";b:1;}, dónde puedo encontrar la explicación exacta de este campo? O quiero saber todo sobre los roles usuarios y Capacidades, ¿dónde puedo obtener esta información?

Segundo, ¿cómo puedo crear nuevos roles a través de la API de WordPress mediante código?

Gracias de antemano.

0
Todas las respuestas a la pregunta 5
1
10

El valor de wp_capabilities se guarda como un array serializado, puedes probarlo en tu PHP o para este ejemplo aquí: http://blog.tanist.co.uk/files/unserialize/.

El Código:

a:1:{s:13:"administrator";b:1;}

Significa:

Array
(
   [administrator] => 1
)

Lo que indica que el usuario es un administrador.

Puedes añadir nuevos roles a la base de datos ejecutando la función add_role, ¡y solo ejecútala una vez!

19 jun 2013 16:31:55
Comentarios

Para ser claro, puedes deserializar el array usando la función PHP unserialize, y el resultado en este caso es array('administrator' => true) en formato var_export.

Flimm Flimm
18 oct 2017 14:27:36
0

Además de la respuesta de @Krysiek, debes saber que los datos almacenados en las tablas meta, incluidos los metadatos de usuario, a menudo están serializados. Si deseas saber qué representan realmente los datos, puedes usar la función de PHP unserialize para determinar su valor. Por ejemplo, al pasar el valor a:1:{s:13:"administrator";b:1;} a través de unserialize (y luego hacer un var_dump de los resultados) se obtiene esto:

array(1) {
    ["administrator"]=>
    bool(true)
}

Encontrarás el mismo tipo de entradas en la tabla options así como en la tabla post_meta.

Sin embargo, debes evitar escribir directamente en estas tablas. Existen funciones de WordPress que te permiten almacenar y acceder a datos sobre usuarios. Por ejemplo, para leer datos de la tabla de metadatos de usuario, debes usar get_user_meta y para escribir debes usar la función de WordPress update_user_meta. Existen funciones similares para las tablas post_meta y options.

19 jun 2013 16:36:58
0

meta_value es la columna para almacenar el valor del campo meta. Cada meta_field contiene una clave y un valor.

Creo que este artículo del Codex sobre roles y capacidades puede ayudarte: http://codex.wordpress.org/Roles_and_Capabilities

Para añadir roles personalizados deberías usar la función add_role (http://codex.wordpress.org/Function_Reference/add_role)

Y un ejemplo de uso del Codex:

$result = add_role('basic_contributor', 'Colaborador Básico', array(
    'read' => true, // True permite esa capacidad
    'edit_posts' => true,
    'delete_posts' => false, // Usa false para denegar explícitamente
));
if (null !== $result) {
    echo '¡Genial! ¡Nuevo rol creado!';
} else {
    echo 'Oh... el rol basic_contributor ya existe.';
}
19 jun 2013 16:14:34
1

La clave "wp_capabilities" en la tabla wp_usermeta identifica la representación serializada de un array que identifica los roles de un usuario y cualquier capacidad que se haya añadido a ese usuario con $user->add_cap('my_capability');. ¡Gracias spaul!

El equipo de WordPress nombró el campo [prefix]_capabilities antes de darse cuenta de que las "capabilities" eran en realidad cosas agrupadas para usuarios que cumplían un rol particular. Cambiar el valor de la clave de [prefix]_capabilities a [prefix]_roles interrumpiría demasiados plugins de terceros además de requerir una gran refactorización en el propio WordPress.

Por esta razón, es seguro decir que la clave de metadatos wp_capabilities contiene roles de usuario y se llamaría wp_roles si no hubiera ya tantas piezas de software útiles que esperan que use el nombre antiguo.

Debido a que este hecho es muy útil para los nuevos entusiastas de WordPress, recomiendo que todos los que tengan algo que decir sobre Roles (o capacidades) de WordPress sean muy claros acerca del hecho de que los roles de usuario se enumeran en un array que está serializado en la tabla usermeta bajo la clave [prefix]_capabilities.

16 ene 2016 04:43:44
Comentarios

No es cierto. Puedes asignar fácilmente capacidades personalizadas a usuarios específicos llamando a $user->add_cap('my_capability'); y la entrada se leerá como a:2:{s:13:"administrator";b:1;s:13:"my_capability";b:1;}. El rol de administrador así como otros usuarios administradores en el sitio no tendrán esta capacidad.

sPaul sPaul
17 ene 2018 18:11:27
0

En la tabla wp_usermeta podemos guardar información adicional relacionada con un usuario al crear uno nuevo o actualizar el perfil de un usuario existente.

En la tabla wp_usermeta hay una columna llamada meta_key donde podemos guardar valores mediante los cuales podemos obtener o actualizar el valor de ese campo, por ejemplo:

Un rol es como una política de acceso dada a un usuario, que solo tiene ese nivel de acceso en el sitio web. Puedes agregar o eliminar un rol.

Las capacidades son como agregar características o restringir un rol. Por ejemplo, hay 2 roles: 'gold-role', 'platinum-role'. Podemos restringir a 'gold-role' para que solo pueda agregar publicaciones pero no publicarlas, mientras que a 'platinum-role' le agregamos la capacidad de publicar. También podemos agregar o eliminar capacidades relacionadas con un rol. Incluso podemos agregar restricciones a los metaboxes de las publicaciones.

Para más información sigue Roles y Capacidades

Puedes agregar un rol y establecer sus capacidades mediante la API de WordPress o puedes usar plugins para hacerlo. En mi opinión, Advanced Access Manager es el mejor plugin para manejar Roles y Capacidades.

19 jun 2013 16:52:40