get_current_screen enqueue check php wordpress administrator

php - check - wordpress admin enqueue css



Compruebe si el usuario actual es administrador en wordpress (8)

Demasiado tarde para una respuesta a esta pregunta, pero creo que podría ser útil de todos modos si alguien termina aquí como yo.

Necesitaba una solución rápida para este problema: verifique si el usuario actual es administrador o no.

Del codex WP obtuve una solución simple que es usar ...

if(is_super_admin($user_id)) { // do stuff for the admin user... }

Según WP-Codex, esta función devuelve Verdadero si el usuario que ha iniciado sesión actualmente es un administrador (super) de red. Esta función devuelve True incluso si el modo de red está deshabilitado pero el usuario actual es admin .

Estoy desarrollando un plugin para WordPress, quiero saber si el usuario actual es administrador o no, desafortunadamente no pude usar current_user_can () porque me da un error, así que estoy usando el $ current_user global. Pero no pude entrar en la parte if, incluso para el usuario administrador ... ¿Cómo solucionar esto?

global $current_user; if ($current_user->role[0]==''administrator''){ function hide_post_page_options() { //global $post; // Set the display css property to none for add category and add tag functions $hide_post_options = "<style type=/"text/css/"> .jaxtag { display: none; } #category-adder { display: none; } </style>"; print($hide_post_options); } add_action( ''admin_head'', ''hide_post_page_options'' ); }


Esto funciona para mí:

global $current_user; if( !empty($current_user->roles) ){ foreach ($current_user->roles as $key => $value) { if( $value == ''administrator'' ){ Do Something } } }

Si no es una configuración de sitios múltiples, puede usar esto para detectar un administrador. Si es multisitio, esto solo devolverá verdadero para un superadministrador.

$user_ID = get_current_user_id(); if($user_ID && is_super_admin( $user_id )) { Do Something }


Intente algo como lo siguiente:

if ( current_user_can( ''manage_options'' ) ) { /* A user with admin privileges */ } else { /* A user without admin privileges */ }

Lea más sobre la función current_user_can here .


Obtenga el usuario y verifique si tiene el rol de administrador, así:

function is_site_admin(){ return in_array(''administrator'', wp_get_current_user()->roles); } if (is_site_admin()) { echo ''Woot Woot''; } else { echo ''So sad, I have no rights''; }


Probado y funciona bien

if(current_user_can(''administrator'') ) { echo ''ok'' ; }else{ echo ''out'' ; }


Sé que es una pregunta antigua, pero me gustaría que esta página sea más útil al abordar el problema real. El problema real aquí es que OP no ha podido utilizar current_user_can( ''manage_options'' ) en su complemento. El uso de la función genera la undefined function... habitual undefined function... error de PHP. Esto sucede porque el complemento se inicializa antes de que el núcleo de WP complete la carga. La solución es muy simple. Cargar el plugin en el momento adecuado es la clave.

Suponiendo que el código del complemento de administración se encuentre dentro de una clase MyPlugin , la inicialización de la clase debe estar conectada a init . A continuación hay una forma de hacerlo.

/** * Plugin Class */ class MyPlugin{ public function __construct(){ /* all hooks and initialization stuff here */ /* only hook if user has appropriate permissions */ if(current_user_can(''manage_options'')){ add_action( ''admin_head'', array($this, ''hide_post_page_options'')); } } function hide_post_page_options() { // Set the display css property to none for add category and add tag functions $hide_post_options = " <style type=/"text/css/"> .jaxtag { display: none; } #category-adder { display: none; } </style>"; print($hide_post_options); } } add_action(''admin_init'', function(){ $myplugin = new MyPlugin(); });

Esta es una forma de asegurarse de que WordPress está disponible para la función de complemento.

Puedes encontrar la documentación de admin_init here .

PS Deberías estudiar el uso de PHP HEREDOC . Es una forma muy simple de escribir cadenas de varias líneas. Tu bloque de estilo se puede reescribir de la siguiente manera

$hide_post_options = <<<HTML <style type="text/css"> .jaxtag { display: none; } #category-adder { display: none; } </style> HTML;

Espero que ayude a alguien.

Gracias.


Usa este código, espero que esto resuelva tu problema.

global $current_user; $user_roles = $current_user->roles; $user_role = array_shift($user_roles); echo trim($user_role);


$user=wp_get_current_user(); if(in_array("administrator", $user->roles)){ //user role is admin }