Ok. Con eso ya podemos empezar.
Como el plugin que estás usando para convertir el archivo de Excel a tabla usa el nombre del archivo de Excel (supongo que eso es de donde viene exelcliente1
), lo que te recomiendo es agregar el número de ID de cada usuario o cliente a su respectivo archivo de Excel.
Por ejemplo, si el número de id del cliente Juan Pérez es 5, entonces su archivo de excel se llamaría excelcliente_5
. Si vas a tener muchos usuarios, quizá podés incluir el apellido del cliente también, por ejemplo, excelcliente_perez_5
.
Para obtener la info de todos tus usuarios y saber qué ID tiene cada uno, podés usar esto:
<?php
$args = array(
'blog_id'=> $GLOBALS['blog_id']
);
print_r(get_users($args));
?>
Con esa información, podés empezar a renombrar tus archivos de Excel. Dependiendo de la estructura que uses para tus archivos, la cosa cambiaría un poco. Acá va un paso a paso.
I.
Chequear si el usuario está logueado y qué capacidades tiene. Para eso, se recomienda testear una capacidad en particular que no tenga un usuario de menor jerarquía (el de mayor jerarquía siempre la va a tener). Para más info sobre roles y capacidades, fijate este link.
Para el ejemplo, voy a usar la capacidad edit_published_posts
, que tienen los usuarios que son autores, editores, administradores o super administradores:
if ( is_user_logged_in() && current_user_can('edit_published_posts') ) {
/* hacé algo */
}
II.
Modificar la siguiente línea del código que me pasaste:
<td>[excel_table fname="exelcliente1"]</td>
por alguno de los códigos de abajo, según el caso:
Caso 1: ID de usuario solamente:
$id = get_userdata( get_current_user_id() ) -> user_lastname;
$usuario = $id;
Resultado: excelcliente_[ID]
Caso 2: Apellido e ID de usuario:
$user_data = get_userdata( get_current_user_id() );
$apellido = strtolower( str_replace( array(" ", "'"), array("-", ""), $user_data -> user_lastname ) );
$id = $user_data -> ID;
$usuario = $apellido."_".$id;
Resultado: excelcliente_[apellido]_[ID]
Fijate que en este caso, se reemplazan todos espacios por guiones y se eliminan todos los apóstrofes, y el resultado de eso se convierte todo a minúsculas.
Caso 3. Nicename e ID de usuario:
$user_data = get_userdata( get_current_user_id() );
$nicename = $user_data -> user_nicename;
$id = $user_data -> ID;
$usuario = $nicename."_".$id;
Resultado: excelcliente_[nicename]_[ID]
4. Al final, independiemtemente del caso:
$output = '<td>[excel_table fname="excelcliente_$usuario"]</td>';
/* Principio de tu código */
echo $output; /* llama al archivo de excel */
/* Final de tu código */
}
III.
El resultado final sería algo así, dependiendo del caso que hayas elegido:
Parte variable (al principio):
Caso 1: ID de usuario solamente:
<?php
if ( is_user_logged_in() && current_user_can('edit_published_posts') ) {
$id = get_userdata( get_current_user_id() ) -> user_lastname;
$usuario = $id;
}
Caso 2: Apellido e ID de usuario:
<?php
if ( is_user_logged_in() && current_user_can('edit_published_posts') ) {
$user_data = get_userdata( get_current_user_id() );
$apellido = str_replace( array(" ", "'"), array("-", ""), $user_data -> user_lastname ); /*Reemplaza espacios por guiones y elimina apóstrofes */
$id = $user_data -> ID;
$usuario = $apellido."_".$id;
}
Caso 3. Nicename e ID de usuario:
<?php
if ( is_user_logged_in() && current_user_can('edit_published_posts') ) {
$user_data = get_userdata( get_current_user_id() );
$nicename = $user_data -> user_nicename;
$id = $user_data -> ID;
$usuario = $nicename."_".$id;
}
Parte constante (al final):
$output = '<td>[excel_table fname="excelcliente_$usuario"]</td>';
?>
[hidepost=0]
<table width="221">
<tbody>
<tr>
<td></td>
<?php echo $output; ?>
</tr>
</tbody>
</table>
[/hidepost]
}
Si no querés ningún dato otro que el ID del usuario, entonces te recomiendo el caso 1, pero si necesitás algún otro dato de su nombre, te recomendaría el caso 3, tanto por practicidad como seguridad.
Acordate que si el código que me pasaste es parte de una página creada desde WP, vas a tener que agregar algún plugin como Exec-PHP para poder incluir código PHP en el contenido. Si el código va en la plantilla (archivo del tema), no es necesario ningún plugin.
Por último, prestá atención al nombre del archivo, ya que en tu código tenés «exelcliente» y yo usé «excelcliente».
Cualquier consulta no dudes en preguntarme.
Saludos.