Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Ejecutar acciones al activar o desactivar un theme en WordPress

Imago voragine.net
[actualizado el ]

Al activar un theme de WordPress hay veces que viene bien modificar algún valor de configuración de WordPress para que el theme funcione plenamente sin que el usuario tenga que hacer nada. Por ejemplo activar el registro de usuarios que por defecto está deshabilitado. Igualmente, hay que prever dejar todo como estaba cuando el theme se desactive. Para ello WordPress dispone de dos hooks a los que podemos asociar acciones.

Para ver cómo funcionan estos hooks, un caso típico: modificar ciertas capacidades de un tipo de usuario, de un rol de WordPress. Por ejemplo, vamos a conceder a los usuarios colaboradores la capacidad de subir imágenes y otros archivos a un post, que por omisión no tienen en WordPress.

Para que al activar el theme se cambien las capacidades de los usuarios colaboradores añadimos al archivo funcions.php la función y lo asociamos al hook after_switch_theme:

add_action( 'after_switch_theme', 'prefijo_add_caps_to_roles', 10 );

function prefijo_add_caps_to_roles() {
  global $wp_roles;
  get_role( 'contributor' );
  $wp_roles->role_objects['contributor']->add_cap( 'upload_files' );
}

Para revertir los cambios cuando el theme se desactive usamos el hook switch_theme:

add_action( 'switch_theme', 'prefijo_remove_caps_to_roles', 10 );
function prefijo_remove_caps_to_roles() {
        get_role( 'contributor' );
        global $wp_roles;
        // Could use the get_role() wrapper here since this function is never
        // called as a one off.  It is always called to alter the role as
        // stored in the DB.
        $wp_roles->role_objects['contributor']->remove_cap( 'upload_files' );
        $wp_roles->role_objects['contributor']->remove_cap( 'edit_others_posts' );
        $wp_roles->role_objects['contributor']->remove_cap( 'edit_published_posts' );
}

3 comentarios

    • Por Alejandra •

    Hola, la verdad, no me resultó. Me gusta tu forma de explicar, sin embargo, en este caso podría servir ser algo más práctico en el ejemplo, o es lo que siento yo, que no me considero novata en WordPress, pero me perdí aquí.

    Agregué la función en functions.php (agregando el respectivo) pero en el «lo asociamos al hook after_switch_theme» me quedé. O sea, intenté tras leer el códex, pero nada me funcionó.

    Podría ser una gran ayuda, si agregas el código que hay que poner y en qué archivo.

    No para mí, pues lo estoy sacando hoy, pero es una observación para que ayude a alguien en el futuro, pues el sitio está muy bueno. Gracias,

    1. Hola Alejandra,

      gracias por las sugerencias y me alegro de que el sitio te parezca útil. Tomo nota para futuros snippets.

Dejar un comentario

*
*

 

Un trackback