Editores que no puedan crear Administradores

Hace tiempo que recomiendo el uso de Members, un fantástico plugin, para gestionar adecuadamente las capacidades y roles de WordPress, pero hay ocasiones en que no es perfecto, tiene sus matices, me explico … 

Es bastante corriente modificar, una vez instalado, algún perfil de usuario (siempre estamos hablando de sitios multiusuario) para que, a su vez, pueda agregar otros usuarios. La idea es montar una estructura de colaboradores en la que alguien, normalmente el Editor, no solo revise el contenido creado por usuarios con perfil de Colaborador y Autor, sino que también pueda hacer de "responsable de recursos humanos" y añadir, modificar y borrar perfiles de usuario y sus capacidades.

Pues bien, con Members podemos hacer todo esto pero hay una pega, y es que cuando asignamos a un perfil de usuario la capacidad de crear y/o modificar usuarios también puede crear y/o modificar usuarios con perfil de Administrador, con el peligro que ello supone, sino revisa la tabla de Perfiles y Capacidades de WordPress.

Afortunadamente, todo tiene solución, así que si este es tu caso (el mío si lo es pues gestiono una red de blogs con múltiples perfiles de usuarios), solo tienes que hacer esto:

  1. Instalas y activas Members
  2. Eliges (o creas) un perfil de usuario al que le añadirás las capacidades de crear, modificar, borrar, cambiar perfiles y usuarios
    members new user1 members new user2
  3. Añades este código al fichero functions.php de tu tema activo:
    PHP:
    1. class JPB_User_Caps {
    2.  
    3.   // Add our filters
    4.   function JPB_User_Caps(){
    5.     add_filter( 'editable_roles', array(&$this, 'editable_roles'));
    6.     add_filter( 'map_meta_cap', array(&$this, 'map_meta_cap'),10,4);
    7.   }
    8.  
    9.   // Remove 'Administrator' from the list of roles if the current user is not an admin
    10.   function editable_roles( $roles ){
    11.     if( isset( $roles['administrator'] ) && !current_user_can('administrator') ){
    12.       unset( $roles['administrator']);
    13.     }
    14.     return $roles;
    15.   }
    16.  
    17.   // If someone is trying to edit or delete and admin and that user isn't an admin, don't allow it
    18.   function map_meta_cap( $caps, $cap, $user_id, $args ){
    19.  
    20.     switch( $cap ){
    21.         case 'edit_user':
    22.         case 'remove_user':
    23.         case 'promote_user':
    24.             if( isset($args[0]) && $args[0] == $user_id )
    25.                 break;
    26.             elseif( !isset($args[0]) )
    27.                 $caps[] = 'do_not_allow';
    28.             $other = new WP_User( absint($args[0]) );
    29.             if( $other->has_cap( 'administrator' ) ){
    30.                 if(!current_user_can('administrator')){
    31.                     $caps[] = 'do_not_allow';
    32.                 }
    33.             }
    34.             break;
    35.         case 'delete_user':
    36.         case 'delete_users':
    37.             if( !isset($args[0]) )
    38.                 break;
    39.             $other = new WP_User( absint($args[0]) );
    40.             if( $other->has_cap( 'administrator' ) ){
    41.                 if(!current_user_can('administrator')){
    42.                     $caps[] = 'do_not_allow';
    43.                 }
    44.             }
    45.             break;
    46.         default:
    47.             break;
    48.     }
    49.     return $caps;
    50.   }
    51.  
    52. }
    53.  
    54. $jpb_user_caps = new JPB_User_Caps();

  4. Guardas los cambios y ¡Ya está!, ahora el nuevo perfil de usuario podrá crear y modificar perfiles pero no podrá crear administradores ni modificar sus perfiles a no ser que, a su vez, sea administrador

¡Que lo disfrutes!

Perfiles y Capacidades

No es la primera vez que hablamos de Perfiles y Capacidades en WordPress, incluso he hablado alguna vez de como gestionarlos, pero he pensado que había que dar algo más de luz en este asunto, y para ello he creado una tabla en la que entenderás mejor qué puede hacer cada tipo de usuario en WordPress, por las capacidades que tiene asignadas.

Como ya sabrás, la gestión de capacidades nativa de WordPress no es la mejor del mundo, y seguramente más de una vez habrás querido asignar capacidades extras a un perfil sin que tuviera muchas otras (solo tienes que fijarte en la tabla en el salto enorme que hay de Autor a Editor), y como todo tiene solución, si este es el caso, como mejor aprovecharás la información de esta tabla, y podrás gestionar adecuadamente perfiles y capacidades en WordPress, te recomiendo usar el plugin Members, que suple esta carencia.

Bueno, aquí tienes la tabla, espero ayude a clarificar un poco este asunto de los Perfiles y Capacidades en WordPress. Su uso es sencillo, a la izquierda tienes la lista de capacidades con su explicación a su derecha, y en la columna de cada tipo de Perfil de usuario si hay un logo en la celda es que tiene la capacidad de la primera columna …

pdf Perfiles y capacidades (PDF) v.1.0 (75.57 kB )

Deja mensajes a tus colaboradores

Si tienes un sitio colaborativo igual es buena idea que dejes mensajes al resto de autores de tu WordPress. Puedes hacerlo de muchas maneras pero una muy sencilla, para mensajes que quieres que tengan siempre presentes, sería la siguiente:

  1. Edita el fichero functions.php
  2. Añade lo siguiente (personalizado a tu gusto claro):
    //aviso a autores
    function fn_admin_notices() {
    if ( !current_user_can( 'edit_posts' ) )
    echo '¡Recuerda moderar los comentarios cada día!';
    }
    add_filter( 'admin_notices', 'fn_admin_notices');

  3. Guarda los cambios

Hay dos variables que puedes/debes cambiar. La primera, obviamente, es el texto a mostrar, y la segunda es qué tipo de usuarios, dependiendo de sus capacidades, verán el mensaje, en este caso los de perfil de Autor (edit_posts), incluso puedes usar varios mensajes dependiendo del tipo de perfil de usuario.

Fácil ¿eh?

¿Qué esperas de WordPress en 2011?

Me parece una idea genial la que ha planteado Jane Wells en el foro oficial de WordPress.org, preguntando a la comunidad cuales son sus deseos para WordPress en 2011, en qué dirección querrías que fuera el desarrollo de WordPress el año que está a punto de empezar.

La idea no es empezar a criticar sino proponer en positivo, por supuesto. Y claro, os traslado la pregunta … 

¿Qué esperas de WordPress en 2011?

Yo apunto mis deseos:

  • Mejoras en la gestión de roles y capacidades, integrando el plugin Members por ejemplo
  • Mejorar las búsquedas de WordPress
  • Galerías personalizables sin apaños
  • Gestión más eficiente de las peticiones a la base de datos

… podría seguir media hora, pero prefiero que os animéis vosotr@s ;)

Contenido exclusivo para suscriptores al Feed

¡Gracias por seguirnos a diario!. Premiamos tu fidelidad ofreciéndote habitualmente contenidos exclusivos. Hoy puedes descargar:

Clic aquí para iniciar la descarga Guía para Administrar WordPress

Novedades de WordPress 3.1

La nueva versión, WordPress 3.1, que se espera lanzar a mediados de Diciembre (de este año) tendrá unas cuantas novedades, no grandes cambios como la redefinición de "perfiles y capacidades" de usuarios, pero si algunos avances interesantes.

Lo que nos avanza Jane Wells es lo siguiente:

  • Enlaces internos, de manera que podamos buscar y añadir enlaces internos usando la misma interfaz del editor, una gran noticia para mejorar el SEO interno de nuestros sitios.
  • Barra de administración, similar a la de WordPress.com, una maravilla para las webs multisitio o acceder fácilmente al escritorio.
  • Mejoras AJAX en la interfaz de administración, permitiendo más personalización y paginaciones más flexibles.
  • Escritorio separado de la red, distinto de los escritorios de cada sitio en webs multisitiio.
  • Plantillas y estilos de entradas, de manera más simple que las actuales plantillas de entrada y taxonomía.
  • Publicación rápida en la web, fuera del escritorio, al estilo de otros CMS, mediante quicktags se podrá integrar el widget de publicación rápida (QuickPress) en el lugar que se desee de la web.
  • Limpieza de la interfaz de administración, lo que supondría un buen repaso al código existente y, posiblemente, una reducción del peso del escritorio.
  • Queries avanzadas de taxonomías, lo que podría ser un adelanto del ansiado nuevo buscador interno de WordPress, que no termina de llegar. Con esto no tendríamos la limitación de búsqueda por una sola tag, aunque ya sabes que hay trucos para buscar en varias categorías y tags.

En fin, que es solo un avance, seguro que de aquí a Diciembre vemos más posibles mejoras. Personalmente me gusta todo lo propuesto, aún dejando en la recámara aún mejoras interesantes (a mi modo de ver) como …

  • Sistema interno propio de cache
  • Nuevo buscador avanzado de WordPress
  • Personalización de perfiles y capacidades
  • Reducción de carga de la base de datos
  • Tiny MCE Advanced por defecto
  • Editor de temas y plugins mejorado
  • Sistema de SEO interno

Como quitar el aviso de actualizar WordPress

aviso actualizar wp

Hemos visto ya varios modos de hacer este truco, con plugins y sin ellos, pero esta es una manera sencilla y limpia de quitar el aviso de actualización de WordPress, muy útil para webs de clientes.

Además, como el código va incluido en el fichero functions.php de la plantilla (theme) siempre irá asociado a tu trabajo para el cliente. Solo tienes que añadir estas líneas al susodicho fichero, uno de nuestros mejores amigos a la hora de personalizar WordPress.

if ( !current_user_can( ‘edit_users’ ) ) {
remove_action( ‘wp_version_check’, ‘wp_version_check’ );
remove_action( ‘admin_init’, ‘_maybe_update_core’ );
add_filter( ‘pre_transient_update_core’, create_function( ‘$a’, “return null;” ) );
}

En este caso, estamos ocultando los avisos de actualización a los usuarios con permisos de administrador e inferiores (edit_users) partiendo de la base de que así no lo verá nadie por debajo de esa capacidad, pero puedes hacer que solo se oculte a otros y los administradores si vean ese aviso, por ejemplo, cambiándolo a publish_posts.

¿Te gustó este post? ¡Compártelo! Bitacoras.com TwitThis Facebook Meneame Google Bookmarks del.icio.us Live Technorati Ping.fm Wikio Turn this article into a PDF! E-mail this story to a friend! Print this article!

WP-Polls: Crear encuestas autores y editores, no solo admin

wp-polls

El otro día expliqué como usar el plugin de encuestas WP-Polls, pero este plugin tiene un “defectillo”, y es que solo permite crear y gestionar encuestas al usuario administrador de WordPress, un fallo tonto. Los usuarios “normales” (autores y editores) de un WordPress solo pueden insertar encuestas pero ¿que sentido tiene si las encuestas tiene que crearlas el administrador y facilitar el ID de las mismas a los autores?, me parece algo totalmente improductivo.

Afortunadamente todo tiene solución en WordPress y he encontrado tres maneras de saltarse esta restricción:

1. Modificar el código del plugin

Esta es una solución sencilla “a priori”, solo tienes que abrir el archivo wp-polls.php de la carpeta del plugin y sustituir esta línea …

$role = get_role('administrator');

por esta otra …

$role = get_role('author');

Solo que no siempre funciona, prueba y si te funciona perfecto.

2. Modificar en profundidad el código del plugin

Esta otra solución, que proponen en los foros de soporte de WP-Polls, pasa por una modificación profunda de algunos aspectos de los ficheros del plugin, permitiendo definir más finamente que puede hacer cada tipo de usuario.

Pero malas noticias, tampoco funciona siempre.

3. Role Manager

No me cansaré de recomendar este plugin. Y es que, además de su utilidad innegable para una gestión completa de los perfiles de usuario de WordPress, también se integra con otros plugins que dependen de estos roles. Por supuesto, también con WP-Polls.

Activar la creación y administración de encuestas a autores y editores es tan fácil como dirigirse a “Usuarios -> Roles” y en los susudichos perfiles hacer clic en la casilla de “Manage polls”. A partir de ese momento los usuarios con perfil de Author y Editor podrán crear, gestionar y, por supuesto, insertar encuestas en WordPress.
author-manage-polls

¿Cual eliges?

Contenido exclusivo para suscriptores al Feed

¡Gracias por seguirnos a diario!. Premiamos tu fidelidad ofreciéndote habitualmente contenidos exclusivos. Hoy puedes descargar:

Clic aquí para iniciar la descarga Guía para Administrar WordPress

¿Te gustó este post? ¡Compártelo!

Bitacoras.com
TwitThis
Facebook
Meneame
Google Bookmarks
del.icio.us
Live
Technorati
Ping.fm
Wikio
Turn this article into a PDF!
E-mail this story to a friend!
Print this article!

Electroplastas.es Un nuevo proyecto que te ayuda a disfrutar de la música a través de playlists de Spotify. Las mejores canciones de Lost, una selección musical de Tarantino o una lista de versiones del Light My Fire de The Doors te están esperando.

Promociona tu web con BetaBlocks (www.betablocks.com).

Guía Role Manager

theoffice

Haciendo caso a las múltiples peticiones que me habéis hecho en varias ocasiones trataré de explicar para qué sirve el plugin Role Manager y lo que, a mi juicio, es el modo mas efectivo de utilizarlo.

Por si no lo conocías, este plugin tiene como función ampliar las posibilidades de gestión de los perfiles de usuario de WordPress, permitiendo personalizar al máximo que capacidades tendrá cada nivel de usuario dentro de tu WordPress. Las capacidades por defecto vienen designadas por WordPress, y ya las expliqué en el post de tipos de usuario en WordPress.

Si necesitas una gestión básica con lo que ofrece WordPress vale, pero si quieres definir perfiles en los que, por ejemplo, los colaboradores puedan incluir imágenes en los posts, tienes que usar Role Manager.

Y es que no es un plugin para estar enredando todo el día con el, es para tener clara la NECESIDAD de usarlo, configurar los perfiles que SEPAS QUE NECESITAS DEFINIR, crear perfiles nuevos SOLO SI CONFIGURANDO LOS EXISTENTES NO TE SATISFACE, y luego olvidarte.

De verdad, para la gestión de usuarios, donde se necesite, es ORO PURO. Si gestionas un sitio con acceso abierto de usuarios. Es más, plantéatelo como si tu blog fuera una empresa, donde tu eres el responsable de recursos humanos y Role Manager es tu gestor de acceso a la maquinaria de trabajo (si has trabajado en una redacción de un periódico es muy similar). Si entra una persona nueva a tu empresa, te permite definir que puede hacer ese “becario”, por ejemplo, y que podrá hacer cuando lo contrates, luego cuando le asciendes podrá tomar decisiones (publicar directamente), si le haces cargo de un equipo podrá administrar el trabajo de los demás (Editor), y así sucesivamente. Y no digamos con los permisos personalizados.

Ahora bien, has de necesitar una gestión de este tipo para aprovecharlo en toda su extensión, la mayoría de las veces te va a servir para un solo detalle … como permitir que los usuarios con perfil de colaborador puedan subir imágenes

Lo que permite Role Manager es asignar o denegar las capacidades por defecto de cada tipo de usuario de WordPress, pero también te permite hacer muchas mas cosas, como …

  • Crear perfiles personalizados
  • Asignar capacidades extra a usuarios concretos
  • Se integra con otros plugins para permitir capacidades adicionales
  • Renombrar los perfiles por defecto
  • Modificar los perfiles por defecto

rolemanager1Para conseguirlo, una vez descargado del sitio oficial e instalado como cualquier otro plugin, te añade varias nuevas secciones desde las que configurar los Roles de usuario.

La primera la encontrarás en las opciones de usuarios de WordPress, donde verás inicialmente los roles por defecto, pero con el plus de que puedes activar o desactivar capacidades solo con hacer clic en los iconos junto a cada capacidad. No hace falta confirmar, solo pulsa en el icono y activas/desactivas capacidades.

rolemanager2

Además de esto, mas abajo, puedes crear nuevos perfiles, asignándoles las capacidades que creas convenientes. Una vez creada un nuevo Rol podrás asignarlo a los usuarios existentes o incluso definirla como rol por defecto de WordPress en la sección General de la ventana de opciones de tu sitio, es automático.

rolemanager3

Por último, en esta ventana también dispones de la posibilidad de crear nuevas capacidades, para lo que te tendrás que guiar de las capacidades disponibles en WordPress, no todas habilitadas por defecto.

rolemanager4

Pero ahí no acaban las posibilidades de Role Manager, pues en el perfil de cada usuario permite modificar sus capacidades, añadiendo o denegando permisos usuario a usuario. Para ello, solo tienes que acceder a la página de Autores y Usuarios de WordPress y editar cualquier usuario. Además de las opciones habituales encontrarás un bloque desde el que asignar capacidades extra, permitiendo definir usuarios “especiales” sin necesidad de crear un perfil personalizado para cada tipo de usuario.

rolemanager5

Como puedes ver por las capturas, y espero que la explicación, es un plugin realmente sencillo de utilizar y configurar. El único escollo que puedes encontrarte es no saber exactamente que permite cada capacidad específica, pero para eso tienes el CODEX (ver enlace al final) y el traductor de Google ¿no?. Por si ayuda en algo he traducido el plugin, que puedes descargar en el siguiente enlace:

Nota: Hay un archivo incrustado en este artículo, visita el blog para descargar el archivo.

Si con lo que te ofrece Role Manager no tienes suficiente, si aún quieres rizar más el rizo asignando capacidades a usuarios dependiendo de la categoría, puedes combinarlo con Role Scoper, que añade esta funcionalidad, u optar por Flutter, que además permite crear paneles de escritura y campos personalizados por cada tipo de usuario.

Enlaces imprescindibles para ampliar esta guía:

Contenido exclusivo para suscriptores al Feed

¡Gracias por seguirnos a diario!. Premiamos tu fidelidad ofreciéndote habitualmente contenidos exclusivos. Hoy puedes descargar:

Clic aquí para iniciar la descarga Guía Windows Live Writer

¿Te gustó este post? ¡Compártelo!

Bitacoras.com
TwitThis
Facebook
Google
del.icio.us
Live
StumbleUpon
Technorati
Wikio
Tumblr
E-mail this story to a friend!
Print this article!
Ping.fm

Electroplastas.es Un nuevo proyecto que te ayuda a disfrutar de la música a través de playlists de Spotify. Las mejores canciones de Lost, una selección musical de Tarantino o una lista de versiones del Light My Fire de The Doors te están esperando.

Promociona tu web con BetaBlocks (www.betablocks.com).

Contenido exclusivo a usuarios registrados con ’shortcodes’

silencio

Hay algunos plugins por ahí que puedes utilizar si necesitas mostrar contenido exclusivo solo a usuarios registrados, pero Justin ha creado un tutorial muy completo de como hacerlo usando solamente ‘shortcodes‘, esas pequeñas piezas de código que puedes añadir al fichero ‘functions.php‘ de tu plantilla.

Vamos a ver como se hace, nos propone cuatro variables …

1. Contenido para usuarios que no están registrados

La mayoría del tráfico siempre proviene de usuarios no registrados (aunque en Ayuda WordPress somos casi 800 usuarios registrados) así que podemos definir contenido que se muestre solo a usuarios no registrados (y sin conectar). Esto puede servir para invitarles a registrarse, suscribirse al feed RSS, o simplemente mostrarles anuncios, tu eliges.

Abrimos el fichero ‘functions.php‘ de nuestro theme activo y le añadimos este código:

add_shortcode( 'visitante', 'shortcode_para_visitantes' );

function shortcode_para_visitantes( $atts, $content = null ) {
if ( ( !is_user_logged_in() && !is_null( $content ) ) || is_feed() )
return $content;
return '';
}

Luego, cuando escribas cualquier post o página, añade esto para mostrar contenido solo a usuarios que no estén conectados/registrados:

[visitante]

Aquí pones lo que te apetezca que quieras que vean solo los no registrados

[/visitante]

Ten en cuenta, eso si, que este contenido será visible también en el feed RSS, no como las siguientes dos técnicas, que no serán visibles en los feeds ni para usuarios no registrados

2. Contenido para usuarios registrados/conectados

En este caso vamos a mostrar cierto contenido solo a usuarios que estén registrados y conectados en tu sitio. El mimso estará oculto para el resto, y no se mostrará en los feeds.

De nuevo añadimos un pequeño codigo al fichero ‘functions.php‘ de nuestro theme activo:

add_shortcode( 'miembro', 'shortcode_para_miembros' );

function shortcode_para_miembros( $atts, $content = null ) {
if ( is_user_logged_in() && !is_null( $content ) && !is_feed() )
return $content;
return '';
}

De este modo, cuando añadas algo entre las nuevas tags [miembro] solo lo verán los registrados:

[miembro]

Contenido que solo ven los usuarios registrados/conectados.

[/miembro]

3. Contenido dependiendo del perfil/capacidad de usuario

Este código es el más completo, ya que permite comprobar la capacidad del usuario y, basándose en su perfil, mostrar contenido de un tipo u otro. Incluso puedes añadir nuevos perfiles con el plugin Role Manager para rizar mas aún el rizo.

En esta ocasión, el código a añadir al fichero ‘functions.php‘ es este:

add_shortcode( 'acceso', 'shortcode_segun_perfil' );

function shortcode_segun_perfil( $attr, $content = null ) {

extract( shortcode_atts( array( 'capability' => 'read' ), $attr ) );

if ( current_user_can( $capability ) && !is_null( $content ) && !is_feed() )
		return $content;

return '';
}

Ahora viene lo bueno, pues definiremos en el mismo shortcode a incluir en nuestros posts la capacidad del usuario, en este ejemplo sería la de switch_themes (an administrator in the default WordPress setup):

[acceso capability="switch_themes"]

Esto solo lo ven los administradores, o sea tu.

[/acceso]

Cuando definimos en el código del fichero ‘functions.php‘ la capacidad de read solo marcamos la capacidad por defecto, luego, en cada shortcode, podemos añadir capacidades extra. Un ejemplo básico, en el que tendrían acceso todos los registrados sería este:

 

[acceso]

Me lees ¿no?

[/acceso]

4. Contenido para usuarios que no cumplan los requisitos

Estos shortcodes son fantásticos si quieres ocultar algo pero si quieres mostrar un mensaje a la gente a la que le ocultes “cosas” tienes que hacerles un pequeño cambio.

En cada uno de los códigos de arriba, justo antes de la última línea debes añadir esto:

return '';

En este caso, para el usuario que no tiene el perfil definido por el shortcode, no se le mostrará nada. Ahora bien, si quieres dejarle un mensaje haces un pequeño cambio::

return 'Lo siento, si te registras podrás ver mas cosas';

Y ya está, ahora eres tu el que tienes que animar a tus usuarios a registrarse y así poder disfrutar del contenido oculto: descargas, tutoriales, códigos, etc.

Vía

¿Te gustó este post? ¡Compártelo!

Bitacoras.com
TwitThis
Facebook
Google
del.icio.us
Live
StumbleUpon
Technorati
Wikio
Tumblr
E-mail this story to a friend!
Print this article!
Ping.fm

¿Sabes cuanto te costaría este anuncio que estás leyendo si anunciásemos tu propio sitio web? La disparatada cantidad de 0,001 €. No, no nos hemos equivocado con los ceros, prueba BetaBlocks.

Promociona tu web con BetaBlocks (www.betablocks.com).