Se me ha presentado un caso, en el que tenía que imprimir el nombre del usuario registrado en wordpress.
WordPress cuenta con un número de ‘roles’ para los nuevos usuarios, entre ellos están el de Suscriptor, Colaborador, Autor, Editor y Administrador. A fecha de hoy estos son los que vienen por defecto en nuestro WordPress, aunque hay scripts para añadir o crear diferentes tipos de roles, aunque eso es ya otra historia, y no es a lo que voy.
¿Qué sería lo importante saber en estos casos? Bueno, pues los tipos de datos o registros que se hacen en la base de datos del WordPress. Si teneis acceso a vuestra base de datos estos se encuentran en la tabla de (wp_)users.
¿Qué es lo que se guarda en ella? Pues las columnas son, el ID, user_login, user_pass, user_nicename, user_email, user_registered, user_activation_key, user_status y el diplay_name.
El user_login y el display_name son los mismos, después está también el user_nicename que es el alias que se asigna cuando uno se registra.
A mí lo que me interesa, es mostrar en unas ciertas páginas sólo a los usuarios registrados en WordPress. Y en esta página mostrarle el nombre de usuario o si quisiera, todos los datos que ha rellenado a la hora de registrarse, pues ya sabemos que columnas son las que usa WP y le podremos pedir que nos muestre esos datos o valores.
Bien, en mi caso me he creado una plantilla para esta página. Así he comienzo el archivo.php con
<?php
/**
* Template Name: usuarios
*
* @link https://developer.wordpress.org/themes/basics/template-hierarchy/#single-post
*
* @package Go
*/
get_header();
// Start the Loop.
while ( have_posts() ) :
the_post();
?>
<div class="content-area">
<?php
the_content();
El nombre que le he puesto ‘Template Name’ es ‘usuarios’, así que cuando esté creando la página nueva en WP me aparecerá este nombre en la sección de ‘plantillas’.
El get_header(); por supuesto es para insertar los contenidos del archivo header. php, e iniciamos el Loop del WP por si queremos mostrar el contenido de la nueva página que creamos en el wordpress.
Vale, creo que me he enrollado, vamos al asunto.
Lo primero que debemos de hacer es comprobar si el usuario está registrado, el role o permiso que tiene el usuario es el de suscriptor, lo haremos con la función is_user_logged_in()
if ( is_user_logged_in() ) {
$args1 = array(
'role' => 'subscriber',
'orderby' => 'user_nicename',
'order' => 'ASC'
);
$subscribers = get_users($args1);
.....
la función get_users() nos devolverá al usuario que esté en ese momento logeado, y le asigno una variable llamada $subscribers a ese arreglo (array).
Para rescatar el valor ejecuto un foreach()
foreach ($subscribers as $user) {
?>
<p><?php echo $user->display_name; ?></p>
<?php
}
La variable $user nos devolverá los valores que obtiene de la base de datos, entonces que es lo que lo que queremos de la base de datos, osea del usuario, pues en mi caso es el display_name nada más sencillo que indicárselo al $user
Terminamos la función indicando que, si el usuario no está registrado le mostramos un mensaje.
} else {
echo "<h3>Tienes que estar registrado.</h3>";
}
// Y continuamos con el resto de la plantilla
Listo, ya hemos impreso el nombre de nuestro usuario registrado.