¿Cómo redireccionar a los que no son administradores a la página de inicio si intento ver mysite.com/wp-admin/?

2

Quiero que todos mis usuarios (colaboradores y autores también), pero el administrador se redirija a la página de inicio si intentan ver mysite.com/wp-admin/. Los colaboradores y los autores deben poder agregar y editar publicaciones como de costumbre, junto con otros que deben ser forzados a ser redirigidos ... Ya he eliminado el enlace al panel de control ... También probé algunos complementos, pero el que se acerca (Eliminar acceso al cuadro de mandos) redirige a la página principal, pero evita que los colaboradores y autores agreguen, editen y eliminen publicaciones. Gracias!

    
pregunta user27309 12.03.2013 - 15:45

5 respuestas

0

Lamentablemente, ninguno de los códigos anteriores funcionó para mí, ya que solo redirigieron non admin a la página de inicio, incluso si quisiera que los autores y colaboradores pudieran agregar / editar y eliminar sus publicaciones ... Terminé de eliminar las cajas en el tablero y resolví (parcialmente) mi problema.

Agregué esto en functions.php

function disable_default_dashboard_widgets() {

    remove_meta_box('dashboard_right_now', 'dashboard', 'core');
    remove_meta_box('dashboard_recent_comments', 'dashboard', 'core');
    remove_meta_box('dashboard_incoming_links', 'dashboard', 'core');
    remove_meta_box('dashboard_plugins', 'dashboard', 'core');

    remove_meta_box('dashboard_quick_press', 'dashboard', 'core');
    remove_meta_box('dashboard_recent_drafts', 'dashboard', 'core');
    remove_meta_box('dashboard_primary', 'dashboard', 'core');
    remove_meta_box('dashboard_secondary', 'dashboard', 'core');
}
add_action('admin_menu', 'disable_default_dashboard_widgets');
    
respondido por el user27309 13.03.2013 - 11:47
5

He estado usando este código por un tiempo, creo que estaba originalmente en un plugin llamado wp block admin pero esto funciona. Solo tiene que cambiar la compatibilidad requerida para que haga lo que necesita, consulte this

$required_capability = 'edit_others_posts';
$redirect_to = '';
function no_admin_init() {      
    // We need the config vars inside the function
    global $required_capability, $redirect_to;      
    // Is this the admin interface?
    if (
        // Look for the presence of /wp-admin/ in the url
        stripos($_SERVER['REQUEST_URI'],'/wp-admin/') !== false
        &&
        // Allow calls to async-upload.php
        stripos($_SERVER['REQUEST_URI'],'async-upload.php') == false
        &&
        // Allow calls to admin-ajax.php
        stripos($_SERVER['REQUEST_URI'],'admin-ajax.php') == false
    ) {         
        // Does the current user fail the required capability level?
        if (!current_user_can($required_capability)) {              
            if ($redirect_to == '') { $redirect_to = get_option('home'); }              
            // Send a temporary redirect
            wp_redirect($redirect_to,302);              
        }           
    }       
}
// Add the action with maximum priority
add_action('init','no_admin_init',0);
    
respondido por el Poxtron 12.03.2013 - 21:57
1

Una adición: SIEMPRE verifique si hay un usuario que haya iniciado sesión; de lo contrario, evitará que los elementos protegidos se muestren en la pantalla de inicio de sesión:

function redirect_non_admin_user(){
    if ( is_user_logged_in() ) {
        if ( !defined( 'DOING_AJAX' ) && !current_user_can('administrator') ){
            wp_redirect( site_url() );  exit;
        }
    }
}
add_action( 'admin_init', 'redirect_non_admin_user' );

Muchas gracias por ofrecer esta solución :-)

    
respondido por el Aous 11.03.2016 - 18:01
0

Sé que todavía es una pregunta antigua, pero puedes echarle un vistazo.

function redirect_non_admin_user(){
    if ( !defined( 'DOING_AJAX' ) && !current_user_can('administrator') ){
        wp_redirect( site_url() );  exit;
    } 
}


add_action( 'admin_init', 'redirect_non_admin_user' );

Esta comprobación es muy IMPORTANTE "! define ('DOING_AJAX')" cuando usas la llamada ajax de administrador en la interfaz.

    
respondido por el Rocker Maruf 10.03.2015 - 07:17
0

Solo hay dos cosas que debes verificar:

  • Si el usuario está en la interfaz de administración
  • Si tiene la capacidad o no

Mientras estemos usando el gancho template_redirect , no tenemos que revisar las páginas de inicio de sesión / registro / contraseña, ya que la redirección pasará invisible para el usuario.

Aquí está la idea envuelta como un pequeño complemento (mu-).

<?php
/**
 * Plugin Name: (#90535) Redirect Non-Admin users to the "Home"-page.
 * Description: Checks if we're in the admin UI and if the user has the admin only 'manage_options' capability
 * Version:     2013.03.12
 * Author:      Franz Josef Kaiser
 */
add_action( 'template_redirect', 'wpse90535_admin_denied' );
function wpse90535_admin_denied()
{
    is_admin()
    && ! current_user_can( 'manage_options' )
        and exit( wp_redirect( home_url(), 302 ) );
}
    
respondido por el kaiser 12.03.2013 - 22:33

Lea otras preguntas en las etiquetas