En un artículo anterior habíamos visto cómo mostrar datos desde un archivo .CSV, sin embargo en este artículo vamos a filtrar sólo los datos que correspondan a un determinado usuario.
Resultado Final
Basado en el nombre de usuario de los usuarios de WordPress.
Cuando un usuario se conecta obtendremos sus correspondientes datos del archivo .csv.
Código para mostrar datos de un usuario desde archivo .CSV
Puedes agregar el siguiente código en el archivo functions.php de tu tema hijo.
add_filter('the_content', 'dcms_show_csv_data_user');
function dcms_show_csv_data_user($content){
$file_path = ABSPATH.'data/people-1000.csv';
$page_slug = 'mostrar-datos';
$column_search = 1; // Column to search user login
$exclude_columns = ['Index']; // Columns to exclude
// Show in specific page and file exists
if ( is_page($page_slug) && file_exists($file_path) ){
// Check if user is logged
if ( !is_user_logged_in() ){
return 'Debes iniciar sesión para ver los datos';
}
// Get user login
$current_user = wp_get_current_user();
$user_login = $current_user->user_login;
// Open file
$f = fopen($file_path, "r");
// Get header
$header = fgetcsv($f, 1000);
// Get body
$data = [];
while ( $line = fgetcsv($f) ) {
if ( $line[$column_search] === $user_login){
$data = $line;
break;
}
}
fclose($f);
// Check if data is empty
if ( empty($data) ){
echo 'No se encontraron datos';
}
// Build associative array
$result = array_combine($header, $data);
// Show data
echo "<table class='csv-data'>\n";
foreach ($result as $key => $value) {
if ( $exclude_columns && in_array($key, $exclude_columns) ){
continue;
}
echo "<tr>\n";
echo "<th>$key</th>\n";
echo "<td>$value</td>\n";
echo "</tr>\n";
}
echo "</table>\n";
}
return $content;
}
En el código anterior:
- Usamos el Hook de filtro the_content para mostrar contenido adicional en una determinada página.
- Dentro de la función a la que hace referencia el hook definimos la página en la que se mostrará el contenido en la variable $page_slug.
- También definimos variables para la ruta del archivo, la columna de búsqueda de login del usuario, que será la columna número 1, y una variable en caso necesitemos excluir columnas del archivo .csv
- Hacemos comprobaciones y verificamos si el usuario esta logueado.
- Obtenemos el nombre del usuario en la variable $user_login.
- Abrimos el archivo .csv y obtenemos la cabecera.
- Obtenemos la data buscando en base a la columna 1 y al $user_login.
- En la variable $result guardamos los datos como un array asociativo de claves y valor.
- Finalmente, simplemente mostramos los resultados excluyendo las columnas de la variable $exclude_columns
- En caso no se cumplan las condiciones iniciales simplemente retornamos el contenido de la página.
Conclusión
Como has podido comprobar puedes mostrar datos complementarios de un usuario basado en su username y obtener estos datos de un archivo .csv externo. Hemos visto como hacer esto directamente a través de código.
La entrada Mostrar datos por usuario desde archivo CSV en WordPress es un artículo reciente del sitio DecodeCMS.
0 Commentaires