Soporte » Plugins y Hacks » Informacion para Usuarios-Clientes

  • Resuelto chemm

    (@chemm)


    Hola, soy un usuario avanzado de wordpress, es decir eh diseñado webs que estan en linea.
    Estoy realizando una web, obviamente con wordpress, y el problema que me surgio es un pedido que me pidieron para que le agregue a la pagina.
    La pagina es de un local que vende mercaderia (en mayor), y tengo que realizar un sistema de usuarios, que no se pueden registrar, es decir, les doy yo su usuario y contraseña.
    Lo importante es que cada usuario cuando se loguea, y se dirige a una de las paginas que es «Cliente», puede ver su informacion de cuenta, es decir lo que compro, pago o debe)
    Ya tengo puesto el plugin «excel to table» para ver Excel en la pagina, y el hidepost, que es para que solo registrado puedan ver la pagina
    el problema es que no puedo hacer que cada cliente vea su excel.
    lo que quiero decir con «excel» es que yo tengo el Excel (con el resumen de cuenta del cliente1) y quiero que cuando se loguee, en la pagina Clientes, le aparezca solo el excel de Cliente1, lo mismo para el cliente2
    Cabe aclarar, que en la pagina no quiero que se comercialize online, solo que cada cliente pueda ver su respectiva informacion de cuenta online
    Bueno espero que hayan entedido y no los haya enredado con palabrerio.
    espero sus respuestas, Gracias

Viendo 12 respuestas - de la 1 a la 12 (de un total de 12)
  • Hola.
    ¿Podrías compartir un link a la página (creando un usuario de prueba) y hacer un pastebin del código de la página en cuestión?
    A primera vista, me parece que no necesitarías un plugin para esto. Con tener una hoja de cálculos de excel para cada usuario registrado y agregar el ID del usuario al nombre de la hoja correspondiente deberías poder hacerlo funcionar con un poco de PHP.
    Saludos.

    Iniciador del debate chemm

    (@chemm)

    Mira, la pagina la estoy realizando en un server local con easyphp,
    a lo mejor no me exprese bien, quiero lograr que el usuario1 visualize en la pagina(pestaña) clientes, el excel con el resumen de su cuenta, si queres te puedo adjuntar una imagen, editada de como quiero que quede.
    pero en fin, lograr que el cliente1, cuando inicie secion, vea la solo la cuenta de cliente1(que es un exel), y cuando inicie cliente2, solo vea la de cliente2…

    Ok, si la estás desarrollando localmente, no hay problema.
    Lo que te decía más arriba es que necesitaría ver el código de la página a la que te referís cuando decís:

    Ya tengo puesto el plugin «excel to table» para ver Excel en la pagina, y el hidepost, que es para que solo registrado puedan ver la pagina

    y necesitaría saber si se trata de una plantilla de página (page template) , es decir, un archivo de tu tema, o si el código está en una página creada desde el panel de WP. El código lo pegar en Pastebin y pasarme el link al paste por acá.

    Iniciador del debate chemm

    (@chemm)

    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.

    Iniciador del debate chemm

    (@chemm)

    La verdad me solucionaste la vida, cre que te debo mas que agradecimientos, ante cualquier problema que se me vuelva a generar, lo consulto, muchas gracias!

    De nada. Me alegro que te haya sido útil. Sí, no dudes en consultarme.
    Saludos.

    Iniciador del debate chemm

    (@chemm)

    Hola de nuevo, tuve problemas, el tutorial esta excelente, lo entiendo de punta a punta, elegi usar solo el ID ya que es lo mas facil y rapido.
    modificando la pagina, y sacando algunos plugins que estaban de mas (cambie el hidepost por el wp_members,para ocultar paginas)
    La pagina me quedo asi:

    Cree 3 clientes de prueba: Jose(con ID.3), Juan (Con ID.4) y el Admin (Soy yo con el ID.1) paralelo a la creacion de excels, excelcliente_1, excelcliente_3, y excelcliente_4.

    Los usuarios son Supcriptores, por eso le puse «Read».
    El problema que cuando me logueo, «no reconoce el codigo»,no me aparece el excel, lo unico que me aparece es: «Informacion de Cuenta.»

    Si me puedes ayudar con este ultima modificacion te lo agradezco.
    Espero la respuesta, Gracias.

    Iniciador del debate chemm

    (@chemm)

    Hola de nuevo, tuve problemas, el tutorial esta excelente, lo entiendo de punta a punta, elegi usar solo el ID ya que es lo mas facil y rapido.
    modificando la pagina, y sacando algunos plugins que estaban de mas (cambie el hidepost por el wp_members,para ocultar paginas)
    La pagina me quedo asi:

    href=»http://pastebin.com/xRzHGjdA»

    Cree 3 clientes de prueba: Jose(con ID.3), Juan (Con ID.4) y el Admin (Soy yo con el ID.1) paralelo a la creacion de excels, excelcliente_1, excelcliente_3, y excelcliente_4.

    Los usuarios son Supcriptores, por eso le puse «Read».
    El problema que cuando me logueo, «no reconoce el codigo»,no me aparece el excel, lo unico que me aparece es: «Informacion de Cuenta.»

    Si me puedes ayudar con este ultima modificacion te lo agradezco.
    Espero la respuesta, Gracias.

    Hola.
    Tenés unos errores en el código que vienen del ejemplo que yo te di (mil disculpas, se ve que estaba medio dormido, jajaja). Primero, estamos sacando mal la ID del usuario. Esta línea:

    $id = get_userdata( get_current_user_id() ) -> user_lastname;

    Debería ser así:

    $id = get_userdata( get_current_user_id() ) -> ID;

    Sin embargo, como mencionaste que sólo te interesa agregar la ID del usuario al archivo de Excel, la podemos simplificar:

    $id = get_current_user_id();

    El código reescrito te debería quedar así:

    <strong>Informacion de Cuenta</strong>
    <?php
    if ( is_user_logged_in() && current_user_can('read') ) {
        $id_usuario = get_current_user_id();
        $output = "[excel_table fname='excelcliente_$id_usuario']";
    } else {
        $pageURL  = 'http://';
        $pageURL .= $_SERVER['HTTP_HOST'];
        $pageURL .= $_SERVER['REQUEST_URI'];
        $output = "Debe ".__( wp_loginout($pageURL, false), strtolower(wp_get_theme() -> Name) )." para acceder a su información.";
    }
    echo $output;
    ?>

    Le agregué una funcionalidad que consiste en que, si el usuario no está logueado, le sale un mensaje por defecto pidiéndole que se loguee.
    Saludos!

    Iniciador del debate chemm

    (@chemm)

    De pelos, ahora se soluciono todo. y muy bueno que le agregaste un inicio de sesion, tenia el sidebarLogin, en un widget, pero prefiero eso.
    Te debo mil, jaja
    Gracias por tus conocimientos, Saludos!

    Me alegro que te haya funcionado.
    Saludos y suerte.

Viendo 12 respuestas - de la 1 a la 12 (de un total de 12)
  • El debate ‘Informacion para Usuarios-Clientes’ está cerrado a nuevas respuestas.