Soporte » Plugins y Hacks » Hacks » Posicionar shortcode en pagina WordPress

  • Resuelto bigdatadestroy

    (@bigdatadestroy)


    Hola chicos! Lo primero es que muchas gracias por vuestra ayuda.
    El problema que tengo es el siguiente: He creado un shortcode y lo he introducido en el functions, dicho shortcode muestra en pantalla los datos del usuario logeado. Mi codigo es el siguiente:

    function shortcode_datosuser() {
     if ( is_user_logged_in() ) {
            
        $cu = wp_get_current_user();
        /*echo "<font color='white'>". $cu->user_firstname."</font>";*/
        echo "<br>";
        echo "<font color='white'>".'Nombre: '            . $cu->user_firstname."</font>";
        echo "<br>";
        echo "<font color='white'>".'Apellidos: '         . $cu->user_lastname."</font>";
        echo "<br>";
        echo "<font color='white'>".'Nick: '              . $cu->display_name."</font>";
        echo "<br>";
        echo "<font color='white'>".'Email: '             . $cu->user_email."</font>";
        echo "<br>";
        echo "<font color='white'>".'Telefono: '          . $cu->user_phone."</font>";
        echo "<br>";
        echo "<font color='white'>".'Wallet: '            . $cu->user_wallet."</font>";
     }
    }
    
    add_shortcode('datosuser', 'shortcode_datosuser');

    El problema es que yo meto el shortcode en una página cualquiera para que muestre los datos, y en una linea cualquiera (por ejemplo la 15), pero al cargar la pagina se imprime primero la información del shortcode (linea 1) y me desplaza todas las lineas hacia adelante. He probado a meterle saltos de linea al codigo para ver si así aparecia la info más abajo pero sigue haciendo lo mismo y me desplaza todo hacia delante.
    La historia es que yo en mi pagina tengo una cabecera, un menú y después un titulo de sección (Datos del usuario), y claro me gustaría que los datos del shortcode que he creado apareciesen después de todo eso, bajo el título de la sección que he creado para dichos datos, no arriba del todo.
    Os agradecería si me pudieseis ayudar. Muchas gracias. Un saludo.

Viendo 9 respuestas - de la 1 a la 9 (de un total de 9)
  • Moderador LGrusin

    (@lgrusin)

    Prueba meterlo en un párrafo:

    function shortcode_datosuser() {
     if ( is_user_logged_in() ) {
            
        $cu = wp_get_current_user();
        /*echo "<font color='white'>". $cu->user_firstname."</font>";*/
    echo '<p>';    
    echo "<br>";
        echo "<font color='white'>".'Nombre: '            . $cu->user_firstname."</font>";
        echo "<br>";
        echo "<font color='white'>".'Apellidos: '         . $cu->user_lastname."</font>";
        echo "<br>";
        echo "<font color='white'>".'Nick: '              . $cu->display_name."</font>";
        echo "<br>";
        echo "<font color='white'>".'Email: '             . $cu->user_email."</font>";
        echo "<br>";
        echo "<font color='white'>".'Telefono: '          . $cu->user_phone."</font>";
        echo "<br>";
        echo "<font color='white'>".'Wallet: '            . $cu->user_wallet."</font>";
        echo '</p>'; 
     }
    }
    
    add_shortcode('datosuser', 'shortcode_datosuser');
    • Esta respuesta fue modificada hace 4 meses, 3 semanas por LGrusin.

    Hola LGrusin!!
    Pues he probado el codigo y lo he sustituido por el mio, pero nada, sigue apareciendo al principio de la pagina, por delante de todos los demás objetos, aunque yo meta el shortcode por detrás de los mismos!
    La verdad es que me estoy volviendo tarumba, porque muchos plugins que tambien funcionan por shortcodes tú los pones a la altura de la pagina que quieras y aparecen ahí. No por delante de todos los demás objetos de la pagina!
    A ver si alguien da en el clavo con esto.
    Muchas gracias.

    Moderador almendron

    (@almendron)

    Un duda respecto a como pones el shortcode: ¿no lo estarás metiendo directamente en algún archivo de la plantilla como single.php o similar?

    Hola, es porque estás haciendo un echo, prueba a almacenar todo el contenido en una variable y hacer un return, algo así

    function shortcode_datosuser() {
     if ( is_user_logged_in() ) {
        $a='';    
        $cu = wp_get_current_user();
        /*echo "<font color='white'>". $cu->user_firstname."</font>";*/
        $a.= '<p>';    
        $a.= "<br>";
        $a.= "<font color='white'>".'Nombre: '            . $cu->user_firstname."</font>";
        $a.= "<br>";
        $a.= "<font color='white'>".'Apellidos: '         . $cu->user_lastname."</font>";
        $a.= "<br>";
        $a.= "<font color='white'>".'Nick: '              . $cu->display_name."</font>";
        $a.= "<br>";
        $a.= "<font color='white'>".'Email: '             . $cu->user_email."</font>";
        $a.= "<br>";
        $a.= "<font color='white'>".'Telefono: '          . $cu->user_phone."</font>";
        $a.= "<br>";
        $a.= "<font color='white'>".'Wallet: '            . $cu->user_wallet."</font>";
        $a.= '</p>'; 
     }
     return $a;
    }
    
    add_shortcode('datosuser', 'shortcode_datosuser');

    Hola ‘almendron’.
    No, el codigo está como explico en mi primera pregunta dentro del Functions.php.
    Gracias por tu ayuda de todas formas. Un saludo!

    Nota: No se porque no aparece ‘responder’ debajo de cada mensaje, porque me toca responder aquí abajo de manera general y la gente al final no sabe a quien va dirigido el mensaje.

    Hola lemik!!!
    Tengo que felicitarte, porque has dado en el clavo amigo!! Problema solucionado. Sustituyendo los echo por el return y metiendo los datos en una variable funciona perfectamente.
    Fíjate que como no podía solucionarlo instalé un plugin llamado ‘Insert PHP Code Snippet’ que me permite crear shortcodes y después insertarlos con su referencia. Y así me funcionaba.
    Pero ahora que los puedo crear con este sistema que me has propuesto los crearé en el functions y así no sobrecargo la pagina con plugins.
    Muchísimas gracias a todos, de verdad. Sois unos máquinas!!
    Cuidaros. Un saludo for all.

    • Esta respuesta fue modificada hace 4 meses, 2 semanas por bigdatadestroy.
    Moderador almendron

    (@almendron)

    No me refería a eso. Ya se que el código lo has puesto en el functions.php del tema.

    Te preguntaba cómo aplicas luego el shortcode, es decir cómo y donde insertas [datosuser]

    Hola almendron,

    Pues los shortcodes los inserto en las páginas. En las páginas que creo de wordpress y que es donde están los datos que se verán al cargar la web.
    Aquí mira:
    Imagen seccion paginas backend WordPress

    Un saludo 😉

    Has probado a insertarlo desde el editor? o algun editor como Elementor

Viendo 9 respuestas - de la 1 a la 9 (de un total de 9)
  • Debes estar registrado para responder a este debate.