{"id":1658,"date":"2019-01-31T12:59:36","date_gmt":"2019-01-31T18:59:36","guid":{"rendered":"https:\/\/wpsheeteditor.com\/es\/?post_type=snippets&#038;p=1658"},"modified":"2019-07-01T21:12:37","modified_gmt":"2019-07-02T03:12:37","slug":"como-editar-multiples-roles-usuario-hoja","status":"publish","type":"snippets","link":"https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/","title":{"rendered":"C\u00f3mo Editar M\u00faltiples Roles de Usuario en la Hoja"},"content":{"rendered":"<p>Cuando usas la &#8221; Hoja de Usuarios de WordPress&#8221;, ves una columna para editar el rol de usuario. Por defecto, WordPress asigna un rol a cada usuario. Pero algunos sitios web utilizan un plugin para asignar m\u00faltiples roles a cada usuario.<\/p>\n<p>En este caso, te mostraremos c\u00f3mo editar m\u00faltiples roles por usuario en la Hoja de Usuarios de WordPress.<\/p>\n<p>Esto se basa en el plugin &#8220;Multiple Roles&#8221;.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Obten_el_plugin\"><\/span><strong>Obt\u00e9n el plugin<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Puedes descargarlo como plugin de WordPress. S\u00f3lo tienes que instalar el zip en tu sitio y funcionar\u00e1 autom\u00e1ticamente.<\/p>\n<p>Nota. Necesitas tener la Hoja de Usuarios de WordPress activa, es un plugin premium que proporciona la hoja de usuarios. Este plugin gratuito es una extensi\u00f3n de la hoja de c\u00e1lculo de usuarios.<\/p>\n<p>Si eres un desarrollador, puedes leer este post para entender qu\u00e9 hace el plugin y c\u00f3mo est\u00e1 codificado.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"1-_Registrar_la_nueva_columna_en_la_hoja_de_calculo\"><\/span><strong>1- Registrar la nueva columna en la hoja de c\u00e1lculo<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Este fragmento es muy simple. Usamos el gancho before_init para modificar el objeto de la hoja.<\/p>\n<p>Hacemos la modificaci\u00f3n s\u00f3lo si el proveedor de la hoja = &#8216;usuario&#8217; (Hoja de Usuarios).<\/p>\n<p>Registramos una nueva columna pasando la clave de la columna (wpse_multiple_roles), la clave de la hoja de c\u00e1lculo (usuario) y la configuraci\u00f3n de la columna.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">add_action('vg_sheet_editor\/editor\/before_init', 'register_columns');\r\nfunction register_columns($editor) {\r\n  if ($editor-&gt;args['provider'] === 'user') {\r\n    $editor-&gt;args['columns']-&gt;register_item('wpse_multiple_roles, 'user', array(\r\n      'data_type' =&gt; 'meta_data',\r\n      'supports_formulas' =&gt; true,\r\n    ));\r\n  }\r\n}<\/pre>\n<p>Esto a\u00f1adir\u00e1 una celda de texto a la hoja de c\u00e1lculo y podremos editarla y guardarla.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"2-_Modifica_los_datos_antes_de_guardar_la_celda\"><\/span><strong>2- Modifica los datos antes de guardar la celda<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Por defecto, la Hoja guarda la celda como texto simple. En este caso, el plugin &#8220;Multiple Roles&#8221; requiere los roles como array. As\u00ed que necesitamos modificar el valor antes de guardarlo en la base de datos.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">add_filter('vg_sheet_editor\/provider\/user\/update_item_meta', 'filter_cell_data_for_saving', 10, 3);\r\nfunction filter_cell_data_for_saving($new_value, $id, $key) {\r\n  global $wpdb;\r\n  if ($key === 'wpse_multiple_roles') {\r\n    $roles = array_fill_keys(array_values(array_map('trim', explode(',', $new_value))), 1);\r\n    \/\/ We can't save empty roles, the user must have one role at least\r\n    if (!empty($roles)) {\r\n      update_user_meta($id, $wpdb-&gt;prefix . 'capabilities', $roles);\r\n    }\r\n    $new_value = '';\r\n  }\r\n\r\n  return $new_value;\r\n}<\/pre>\n<p>El filtro &#8220;vg_sheet_editor\/provider\/user\/update_item_meta&#8221; se ejecuta antes de guardar cada campo meta. En el interior comprobamos si la clave de campo es igual a la columna &#8220;Multiple Roles&#8221;, convertimos la cadena de &#8220;role1, role2, role3&#8221; en un array como este, y guardamos el campo directamente. Devolvemos una cadena vac\u00eda, as\u00ed que la Hoja guarda el campo falso de &#8220;roles m\u00faltiples&#8221; como vac\u00edo porque nunca lo usaremos:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">array(\r\n\"editor\" =&gt; 1,\r\n\"author\" =&gt; 1,\r\n)<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"3-_Modifica_los_datos_de_lectura\"><\/span>3- Modifica los datos de lectura<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Ahora tenemos que hacer lo contrario. Obtenemos los datos de la base de datos como array y necesitamos convertirlos en una cadena con roles separados por comas.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"php\">add_filter('vg_sheet_editor\/provider\/user\/get_item_meta', 'filter_cell_data_for_readings', 10, 5);\r\nfunction filter_cell_data_for_readings($value, $id, $key, $single, $context) {\r\n  global $wpdb;\r\n  if ($context !== 'read') {\r\n    return $value;\r\n  }\r\n\r\n  if ($key === 'wpse_multiple_roles') {\r\n    $roles = get_user_meta($id, $wpdb-&gt;prefix . 'capabilities', true);\r\n    $value = ( is_array($roles) ) ? implode(', ', array_keys($roles)) : '';\r\n  }\r\n\r\n  return $value;\r\n}<\/pre>\n<p>Estamos haciendo algo similar al paso anterior. Usamos un filtro para modificar el valor, y si el contexto no es &#8220;le\u00eddo&#8221; (este filtro es para leer datos, pero podr\u00edamos estar leyendo datos en un contexto de almacenamiento), obtenemos los datos sin procesar de la base de datos, los convertimos en cadena y devolvemos la cadena.<\/p>\n","protected":false},"featured_media":0,"template":"","meta":{"_acf_changed":false,"_custom_body_class":"","_custom_post_class":"","_links_to":"","_links_to_target":""},"class_list":["post-1658","snippets","type-snippets","status-publish","hentry","entry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>C\u00f3mo Editar M\u00faltiples Roles de Usuario en la Hoja - WP Sheet Editor en Espa\u00f1ol<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo Editar M\u00faltiples Roles de Usuario en la Hoja - WP Sheet Editor en Espa\u00f1ol\" \/>\n<meta property=\"og:description\" content=\"Cuando usas la &#8221; Hoja de Usuarios de WordPress&#8221;, ves una columna para editar el rol de usuario. Por defecto, WordPress asigna un rol a cada usuario. Pero algunos sitios web utilizan un plugin para asignar m\u00faltiples roles a cada usuario. En este caso, te mostraremos c\u00f3mo editar m\u00faltiples roles por usuario en la Hoja [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/\" \/>\n<meta property=\"og:site_name\" content=\"WP Sheet Editor en Espa\u00f1ol\" \/>\n<meta property=\"article:modified_time\" content=\"2019-07-02T03:12:37+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data1\" content=\"3 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/\",\"url\":\"https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/\",\"name\":\"C\u00f3mo Editar M\u00faltiples Roles de Usuario en la Hoja - WP Sheet Editor en Espa\u00f1ol\",\"isPartOf\":{\"@id\":\"https:\/\/wpsheeteditor.com\/es\/#website\"},\"datePublished\":\"2019-01-31T18:59:36+00:00\",\"dateModified\":\"2019-07-02T03:12:37+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/wpsheeteditor.com\/es\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Snippets\",\"item\":\"https:\/\/wpsheeteditor.com\/es\/snippets\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"C\u00f3mo Editar M\u00faltiples Roles de Usuario en la Hoja\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/wpsheeteditor.com\/es\/#website\",\"url\":\"https:\/\/wpsheeteditor.com\/es\/\",\"name\":\"WP Sheet Editor en Espa\u00f1ol\",\"description\":\"Edita miles de posts y p\u00e1ginas r\u00e1pidamente\",\"publisher\":{\"@id\":\"https:\/\/wpsheeteditor.com\/es\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/wpsheeteditor.com\/es\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/wpsheeteditor.com\/es\/#organization\",\"name\":\"WP Sheet Editor\",\"url\":\"https:\/\/wpsheeteditor.com\/es\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/wpsheeteditor.com\/es\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/media.wpsheeteditor.com\/wp-content\/uploads\/sites\/3\/2016\/06\/26203459\/logo-248x102.png\",\"contentUrl\":\"https:\/\/media.wpsheeteditor.com\/wp-content\/uploads\/sites\/3\/2016\/06\/26203459\/logo-248x102.png\",\"width\":248,\"height\":102,\"caption\":\"WP Sheet Editor\"},\"image\":{\"@id\":\"https:\/\/wpsheeteditor.com\/es\/#\/schema\/logo\/image\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"C\u00f3mo Editar M\u00faltiples Roles de Usuario en la Hoja - WP Sheet Editor en Espa\u00f1ol","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo Editar M\u00faltiples Roles de Usuario en la Hoja - WP Sheet Editor en Espa\u00f1ol","og_description":"Cuando usas la &#8221; Hoja de Usuarios de WordPress&#8221;, ves una columna para editar el rol de usuario. Por defecto, WordPress asigna un rol a cada usuario. Pero algunos sitios web utilizan un plugin para asignar m\u00faltiples roles a cada usuario. En este caso, te mostraremos c\u00f3mo editar m\u00faltiples roles por usuario en la Hoja [&hellip;]","og_url":"https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/","og_site_name":"WP Sheet Editor en Espa\u00f1ol","article_modified_time":"2019-07-02T03:12:37+00:00","twitter_card":"summary_large_image","twitter_misc":{"Tiempo de lectura":"3 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/","url":"https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/","name":"C\u00f3mo Editar M\u00faltiples Roles de Usuario en la Hoja - WP Sheet Editor en Espa\u00f1ol","isPartOf":{"@id":"https:\/\/wpsheeteditor.com\/es\/#website"},"datePublished":"2019-01-31T18:59:36+00:00","dateModified":"2019-07-02T03:12:37+00:00","breadcrumb":{"@id":"https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wpsheeteditor.com\/es\/snippets\/como-editar-multiples-roles-usuario-hoja\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wpsheeteditor.com\/es\/"},{"@type":"ListItem","position":2,"name":"Snippets","item":"https:\/\/wpsheeteditor.com\/es\/snippets\/"},{"@type":"ListItem","position":3,"name":"C\u00f3mo Editar M\u00faltiples Roles de Usuario en la Hoja"}]},{"@type":"WebSite","@id":"https:\/\/wpsheeteditor.com\/es\/#website","url":"https:\/\/wpsheeteditor.com\/es\/","name":"WP Sheet Editor en Espa\u00f1ol","description":"Edita miles de posts y p\u00e1ginas r\u00e1pidamente","publisher":{"@id":"https:\/\/wpsheeteditor.com\/es\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wpsheeteditor.com\/es\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/wpsheeteditor.com\/es\/#organization","name":"WP Sheet Editor","url":"https:\/\/wpsheeteditor.com\/es\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/wpsheeteditor.com\/es\/#\/schema\/logo\/image\/","url":"https:\/\/media.wpsheeteditor.com\/wp-content\/uploads\/sites\/3\/2016\/06\/26203459\/logo-248x102.png","contentUrl":"https:\/\/media.wpsheeteditor.com\/wp-content\/uploads\/sites\/3\/2016\/06\/26203459\/logo-248x102.png","width":248,"height":102,"caption":"WP Sheet Editor"},"image":{"@id":"https:\/\/wpsheeteditor.com\/es\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/wpsheeteditor.com\/es\/wp-json\/wp\/v2\/snippets\/1658","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpsheeteditor.com\/es\/wp-json\/wp\/v2\/snippets"}],"about":[{"href":"https:\/\/wpsheeteditor.com\/es\/wp-json\/wp\/v2\/types\/snippets"}],"wp:attachment":[{"href":"https:\/\/wpsheeteditor.com\/es\/wp-json\/wp\/v2\/media?parent=1658"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}