✅ Editor en WordPress: Personalización de Medios, Capacidades y Menús

La capacidad de personalización es clave en WordPress, especialmente para satisfacer las necesidades únicas de los diferentes roles de usuarios.

En este artículo, exploraremos un conjunto de funciones personalizadas diseñadas para potenciar la experiencia de los editores, permitiéndoles gestionar eficientemente sus medios y simplificar la interfaz de administración.

En definitiva, lo que vamos a conseguir con este código es que los editores solo tengan acceso a crear, visualizar, editar y eliminar sus propias entradas de blog, por lo que el editor no verá el contenido del administrador u otros usuarios de la web.

También vamos a limitar la biblioteca de medios para que cada editor pueda subir y utilizar sus propias imágenes sin que tenga que visualizar las de la web o las de otros editores.

Para finalizar, vamos a eliminar todos los elementos del menú lateral de la administración de WordPress que sean irrelevantes para los editores.

1. Permitir al Editor Ver Solo Sus Propias Imágenes

La primera función se centra en mejorar la gestión de medios para los editores:

// Permitir al Editor ver solo sus propias imágenes
function modificar_query_medios_por_editor($wp_query) {
    if (is_admin() && current_user_can('editor')) {
        $wp_query->set('author', get_current_user_id());
    }
}

// Ejecutar la función en el gancho pre_get_posts
add_action('pre_get_posts', 'modificar_query_medios_por_editor');
Lenguaje del código: PHP (php)

Explicación Técnica:

  • Función Principal: modificar_query_medios_por_editor ajusta la consulta principal para mostrar solo las imágenes asociadas al editor actual.
  • Condición: La condición if (is_admin() && current_user_can('editor')) verifica si el usuario está en el área de administración y tiene el rol de editor.
  • Acción: Dentro de la condición, $wp_query->set('author', get_current_user_id()); configura la consulta para mostrar solo las imágenes del editor actual.

Explicación Sencilla: Esta función asegura que cuando un editor accede a la sección de medios en WordPress, solo ve las imágenes que ha subido, simplificando la gestión al mostrar únicamente contenido relevante para ese editor.

2. Ocultar Opciones del Menú en el Área de Administración para el Rol de Editor

La segunda parte se enfoca en simplificar el menú de administración para los editores:

// Ocultar opciones del menú en el área de administración para el rol de Editor
function ocultar_opciones_menu_editor() {
    if (current_user_can('editor')) {
        remove_menu_page('index.php');                 // Dashboard
        remove_menu_page('upload.php');                // Media
        remove_menu_page('edit.php?post_type=page');   // Pages
        remove_menu_page('edit-comments.php');         // Comments
        remove_menu_page('themes.php');                // Appearance
        remove_menu_page('plugins.php');               // Plugins
        remove_menu_page('users.php');                 // Users
        remove_menu_page('tools.php');                 // Tools
        remove_menu_page('options-general.php');       // Settings
		remove_menu_page('edit.php?post_type=product'); // Products
    }
}

// Ejecutar la función en el gancho admin_menu
add_action('admin_menu', 'ocultar_opciones_menu_editor');
Lenguaje del código: JavaScript (javascript)

Explicación Técnica:

  • Función Principal: ocultar_opciones_menu_editor elimina opciones específicas del menú de administración para el rol de editor.
  • Condición: if (current_user_can('editor')) verifica si el usuario tiene el rol de editor.
  • Acción: Dentro de la condición, remove_menu_page('...'); elimina páginas específicas del menú para simplificar la interfaz.

Explicación Sencilla: Esta función oculta algunas opciones del menú de administración para los editores, eliminando elementos que podrían no ser relevantes para su trabajo diario y simplificando la interfaz.

3. Filtrar las Entradas en el Administrador para Mostrar Solo las del Editor

La tercera parte se centra en filtrar las entradas en la interfaz de administración:

// Filtrar las entradas en el administrador para mostrar solo las entradas del Editor
function filtrar_entradas_admin($query) {
    global $pagenow;

    if (is_admin() && $pagenow == 'edit.php' && isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'post') {
        // Verificar si el usuario es un administrador
        if (current_user_can('administrator')) {
            return; // No aplicar ninguna restricción si es un administrador
        }

        // Verificar si el usuario es un editor
        if (current_user_can('editor')) {
            // Mostrar solo las entradas creadas por el usuario actual (editor)
            $query->set('author', get_current_user_id());
        }
    }
}

// Ejecutar la función en el gancho pre_get_posts
add_action('pre_get_posts', 'filtrar_entradas_admin');
Lenguaje del código: PHP (php)

Explicación Técnica:

  • Función Principal: filtrar_entradas_admin ajusta la consulta de las entradas en la interfaz de administración.
  • Condición: La función verifica si el usuario es un editor y está en la página de edición de entradas.
  • Acción: Si es un editor, $query->set('author', get_current_user_id()); asegura que solo se muestren las entradas del editor actual.

Explicación Sencilla: Esta función garantiza que los editores vean solo las entradas que han creado, simplificando la gestión y evitando distracciones con entradas de otros usuarios.

Código Completo:

El siguiente código tienes que copiarlo y pegarlo en el functions.php de tu tema hijo o utilizar un plugin como CODE SNIPPETS.

// Permitir al Editor ver solo sus propias imágenes
function modificar_query_medios_por_editor($wp_query) {
    if (is_admin() && current_user_can('editor')) {
        $wp_query->set('author', get_current_user_id());
    }
}

// Ejecutar la función en el gancho pre_get_posts
add_action('pre_get_posts', 'modificar_query_medios_por_editor');

// Ocultar opciones del menú en el área de administración para el rol de Editor
function ocultar_opciones_menu_editor() {
    if (current_user_can('editor')) {
        remove_menu_page('index.php');                 // Dashboard
        remove_menu_page('upload.php');                // Media
        remove_menu_page('edit.php?post_type=page');   // Pages
        remove_menu_page('edit-comments.php');         // Comments
        remove_menu_page('themes.php');                // Appearance
        remove_menu_page('plugins.php');               // Plugins
        remove_menu_page('users.php');                 // Users
        remove_menu_page('tools.php');                 // Tools
        remove_menu_page('options-general.php');       // Settings
		remove_menu_page('edit.php?post_type=product'); // Products
    }
}

// Ejecutar la función en el gancho admin_menu
add_action('admin_menu', 'ocultar_opciones_menu_editor');

// Filtrar las entradas en el administrador para mostrar solo las entradas del Editor
function filtrar_entradas_admin($query) {
    global $pagenow;

    if (is_admin() && $pagenow == 'edit.php' && isset($query->query_vars['post_type']) && $query->query_vars['post_type'] == 'post') {
        // Verificar si el usuario es un administrador
        if (current_user_can('administrator')) {
            return; // No aplicar ninguna restricción si es un administrador
        }

        // Verificar si el usuario es un editor
        if (current_user_can('editor')) {
            // Mostrar solo las entradas creadas por el usuario actual (editor)
            $query->set('author', get_current_user_id());
        }
    }
}

// Ejecutar la función en el gancho pre_get_posts
add_action('pre_get_posts', 'filtrar_entradas_admin');
Lenguaje del código: PHP (php)

Conclusión: Al implementar estas funciones personalizadas en tu sitio WordPress, los editores podrán gestionar sus medios de manera más eficiente, experimentarán una interfaz de administración más limpia y solo verán las entradas que han creado. La personalización es esencial para mejorar la productividad y la experiencia de los usuarios en WordPress.

Nos vemos en el siguiente tutorial.

Un saludo.

5/5 - (3 votos)
Compartir Artículo

Un comentario

  1. Fran Salas Master WP 1 año atrás

    Deja tus opiniones o dudas en los comentarios.

¿Tienes una duda o sugerencia sobre este artículo?

Puedes dejar un comentario de forma anónima, sin necesidad de registrarte ni proporcionar ningún dato personal. Tu mensaje se publicará como “Usuario Anónimo No Premium”, un perfil que agrupa a todos los visitantes no registrados.

Importante: para evitar el spam automático, todos los comentarios anónimos deben comenzar con el símbolo #. Ejemplo: # Tengo una duda sobre los shortcodes personalizados...

Este espacio está destinado exclusivamente a preguntas concretas, dudas o sugerencias relacionadas con el contenido del artículo. Por respeto a los demás lectores, no se publicarán temas sin relación.

Privacidad y normas:
  • No tienes que agregar tu nombre, correo ni ningún otro dato identificativo.
  • No se permiten enlaces en comentarios anónimos.
  • No se permiten símbolos especiales como < o > (menor y mayor que), ya que se consideran intentos de insertar código y serán bloqueados.
  • Todos los comentarios anónimos pasan por revisión antes de ser publicados y solo se aprobarán si aportan valor al contenido del artículo.
¿Quieres comentar con tu nombre y que tu mensaje se publique al instante? Inicia sesión o regístrate.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

0%