Agregar una cookie si un administrador inicia sesión en WordPress

Si en alguna ocasión necesitamos agregar una cookie especial que sólo se establezca cuando un administrador tiene una sesión iniciada podemos utilizar el siguiente código:

add_action('init', function () {
    global $current_user;
      if( !isset($_COOKIE['nombre_de_cookie']) && user_can($current_user->ID, 'manage_options') ){
        setcookie('nombre_de_cookie', '2');
      }
});

La función add_action permite agregar una acción para algún hook o punto de anclaje. En este caso el hook es ‘init’ y como segundo parámetro tenemos la función anónima. Alternativamente esta podría ser solamente el nombre de la función, entonces debemos definirla de manera separada. Esta función puede recibir dos parámetros más (prioridad y cantidad de parámetros) pero en este caso no es necesario.

La función setcookie la establecemos sin tiempo de caducidad para que tome el mismo tiempo que dure la sesión.

Restringir el acceso a un archivo basándonos en la presencia de una cookie con htaccess

Uno de los usos que podríamos darle a nuestra cookie establecida sólo para administradores del sistema es el acceso a determinados archivos si tiene esta cookie.

Esto lo podemos hacer con htaccess. Sólo agregamos el siguiente código:

<IfModule mod_rewrite.c>
	RewriteEngine On
	RewriteBase /
	RewriteCond %{REQUEST_URI} /wp-content/uploads/2019/05/Example2.pdf$ [NC]
	RewriteCond %{HTTP_COOKIE} !^.*nombre_de_cookie.*$ [NC]
	RewriteRule .* /index.php [R,L]
</IfModule>

En este caso si el usuario intenta abrir el recurso definido y no se encuentra la cookie presente entonces será direccionado a la página de inicio.

5 1 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments