Edité un poco de código el otro día del complemento Wordpress Ultimate Members para cambiar el perfil de usuario a pendiente si el perfil es editado por el usuario.

Sin embargo, noté que el código también establece la cuenta de administrador como pendiente. No quiero esto, así que he intentado usar una declaración if / else para consultar si el usuario es administrador antes de que se ejecute el script.

Sé que esto es sencillo para los expertos en PHP, pero he probado muchas variaciones y el administrador aún está pendiente de aprobación.

Aquí está el código original que configura el administrador como pendiente:

// Set profile to under review after edits
add_action('um_user_edit_profile', 'um_post_edit_pending_hook', 10, 2); 
    function um_post_edit_pending_hook($user_id, $args){ 
        global $ultimatemember; 
        $ultimatemember->user->pending(); 
}

Aquí está el código que estoy tratando de omitir de administrador con el que no funcionará. No agregaré todas las variaciones que probé.

add_action('um_user_edit_profile', 'um_post_edit_pending_hook', 10, 2); 
function um_post_edit_pending_hook($user_id, $args){ 
if ( is_admin() ) {
    return false;
    } else { 
        global $ultimatemember; 
        $ultimatemember->user->pending(); 
    }
}

Cualquier ayuda será agradecida.

-2
DaniB 28 ene. 2016 a las 18:25

2 respuestas

La mejor respuesta

Esta etiqueta condicional verifica si el tablero o el panel de administración están intentando mostrarse. No debe usarse como un medio para verificar si el usuario actual tiene permiso para ver el Panel de control o el panel de administración (pruebe con current_user_can() en su lugar):

https://codex.wordpress.org/Function_Reference/current_user_can

Fuente:

https://codex.wordpress.org/Function_Reference/is_admin

0
Shah Ghafoori 28 ene. 2016 a las 15:33

@ user45250 lo ha explicado muy bien. He agregado esta respuesta para proporcionar un código de ejemplo.

Aquí está el código de mi comentario anterior.

add_action('um_user_edit_profile', 'um_post_edit_pending_hook', 10, 2); 
function um_post_edit_pending_hook($user_id, $args){ 
    if ( current_user_can('administrator') ) {
        return false;
    } else { 
        global $ultimatemember; 
        $ultimatemember->user->pending(); 
    }
}

PS aquí hay una pregunta relacionada, la respuesta de gmazzap tiene más detalle .

0
Community 13 abr. 2017 a las 12:37