Buenas, en este vídeo vamos a ver cómo ocultar/mostrar contenido en Elementor a través de un botón.
Parece mentira que una cosa tan sencilla como esta no esté resuelta todavía de forma nativa por el plugin, sin embargo, es relativamente fácil hacerlo con un par de líneas de código javascript, o jQuery en nuestro caso.
En el ejemplo simplemente necesitaremos un botón, que nos servirá de desencadenante para mostrar/ocultar el contenido y una sección que estará oculta en un principio. Necesitamos asignar clases tanto al botón como a la sección para poder referenciarlos en el código.
El funcionamiento es sencillo: al pulsar el botón, se dispara un evento de jQuery en el que hacemos un toggle() para mostrar u ocultar la sección.
Os dejo el vídeo donde lo explico todo en detalle, así como el código a utilizar.
37 respuestas
Muy bien muy interesante. ¿No sería mejor haber hecho un plugin en lugar de hacerlo en la propia plantilla?.
Hola Israel, se podría hacer pero en este caso para algo tan puntual no creo que merezca la pena. Gracias!
Hola, te agradezco mucho por tus conocimientos que nos brindas.
Estoy intentando crear el botón para mostrar y ocultar una sección de reseñas. Pero no he tenido suerte, nosé en qué he podido fallar.
He creado el tema hijo y he seguido los pasos a pie de la letra y aún así sin éxito.
Quizás puedas checar mí página, casi la parte final está el botón VER MAS.
Te lo agradecería, gracias saludos
https://www.lalysstore.com/
Hola Angel, he visto que ya lo tienes solucionado. Me alegro, saludos!
Hola buenas, lo he echo tal cual lo pones en el vídeo, he copiado los códigos exactamente igual y he puesto las clases exactamente igual.
Uso Genesis con un tema hijo genesis-sample, he creado el archivo nuevo de js y después en funciones he puesto la función.
Y no hace absolutamente nada cuando pulso, si lo oculto por css de primera hora se queda oculto y si lo dejo que se muestre se queda mostrado.
No se si sabrás porque me puede estar pasando eso, he copiado los textos directamente desde aquí.
Gracias por el aporte es muy util.
Un saludo.
Hola Fernando, pueden ser varias cosas…o bien que no te esté cogiendo bien el fichero de javascript..o la función. Para comprobar lo primero, puedes echar un ojo al inspector de chrome cuando cargues la página en la pestaña Network para ver que te carga el archivo JS. Si lo carga, es la algún error con el evento de la función.
Si no encuentras solución, escríbeme al formulario de contacto.
Saludos.
Efectivamente no me carga el custom-script.js, lo he metido en el js del tema y me lo ha cogido perfectamente y ahora me funciona.
Muchas gracias por su ayuda.
Un saludo.
Me alegro! 🙂
hola, quiero hacer que el contenido oculto se muestre automaticamente despues de XX tiempo, para asi asegurarme de que el visitante termine de ver un video que esta en la pagina. sabes como podria hacer esto? gracias
Hola Alex, perdón por la demora en contestar. Podrías utilizar una función en JavaScript para esperar X segundos. Te dejo algo más de información en este post: https://stackoverflow.com/questions/951021/what-is-the-javascript-version-of-sleep
hola buenas soy nuevo en esto quisiera poder hacer esto pero hice tal cual las configuraciones cree el tema hijo y segui sus instrucciones no se donde este cometiendo el error le agradeceria si me ayuda quisiera colocar esto en la parte de noticias
Hola Duvan, es difícil saber donde esta el error sin poder ver nada. Revisa bien las instrucciones del tutorial porque funciona perfectamente. Saludos.
Hola Alberto buen día, gracias por compartir el tutorial, tengo el mismo inconveniente nombrado en un comentario anterior, hice el proceso tal cual y mantuve los mismos nombres del tutorial, me oculto el contenido pero el botón no hace nada al darle click, estoy trabajando bajo el tema Neve_child.
Espero me puedas ayudar, gracias
Hola Milton, no se cuál puede ser el problema sin ver el código. Una forma de averiguar que está pasando es que inspecciones la web con el inspector de Chrome y vayas al apartado «Consola» a ver que error te da cuando haces click. Saludos.
Seguí el proceso y me salia un mensaje que faltaba (swiper.min.js.map,) así que lo descargue y lo instale en la ruta indicada, efectivamente desapareció el mensaje en Consola, pero sigue sin funcionar el botón, podrías ayudarme de otra forma??
Creo que el swiper no tiene nada que ver. Escríbeme a hola@albertoperojo.com y miramos cómo solucionarlo. Saludos.
Amigo ayúdeme por favor, hize todo lo que dijo, y en modo administrador funciona de maravilla, pero al momento de probarlo desde modo incognito ya no sirve, que puede ser?
Hola Daniel, tienes un plugin de caché? en ese caso, desactívalo o borra la caché. También es recomendable si nada funciona que desactives todos los plugins salvo los de Elementor y vuelvas a probar. Saludos.
saludos, he cargado los códigos tal cual , pero al momento de presionar el botón solo me recarga la pagina
que puede ser , saludos
Hola Pablo, es difícil saberlo sin verlo. Mándame el link por el formulario de contacto a ver si puedo echarle un ojo. Saludos.
Hola Alberto, encantada de saludarte. Todo funcionaba bien hasta que he actualizado WordPress a la versión 5.6. Después de la actualización no funciona el mostrar y ocultar contenido según explicas en este post y no se a qué puede deberse y cómo solucionarlo… ¿Qué puedo hacer para que vuelva a funcionar todo como antes?, ¿Cuál puede ser el problema?
Muchas gracias.
Saludos
Hola Esther, en estas últimas actualizaciones de WordPress están haciendo cambios en las librerías de jQuery migrate y por tanto puede que algún código personalizado te de fallo. Prueba a instalar el plugin jQuery migrate helper a ver si se soluciona: https://wordpress.org/plugins/enable-jquery-migrate-helper/
Saludos.
Hola Alberto
Gracias por ese video tan excelente, necesitaba hacer ese efecto y funciona super bien en mi página, pero ahora tengo un problema, el botón hace el Toggle perfectamente mostrando y ocultando, pero al mostrar, me corre todo a la derecha, pero al acercar el navegador y volverlo a dejar al zoom normal, ya se acomoda y no molesta más, que será??
la URL es:
http://www.freskaleche.com.co/home/tradicion-100-leche
Te agradecería mucho poder solucionar esto tan raro.
Gracias
En el código que has copiado bajo el video, ¿falta una linea en la parte del functions.php?
En el video aparece al final «add_action( ‘wp_enqueue_scripts’, ‘custom-script’ );»
Gracias Fernando, actualizado!
Hola! Y los links que explican cómo hacer? 🙁 Gracias
Hola, buen día. Cómo puedo agregar con el tema Astra, ya lo intente muchas veces y no me da resultado.
El código del functions.php y el jQuery puedes meterlo también en Elementor en el apartado de Custom Code. Saludos.
Hola Alberto. Utilice tu explicación y funciono perfectamente, pero quisiera agregarle la misma funcionalidad a una imagen, es decir que en lugar de tocar un botón se haga clic en una imagen y despliegue un contenido oculto.
Se podria realizar eso?
Muchas gracias
Hola Florencia, sí, podría hacerse de la misma forma. Tendrás que asignarle una clase a la imagen en la parte de avanzado del widget y luego seleccionarlo.
jQuery(document).on(‘click’, ‘.clase_de_la_imagen’, function (event) { …
Gracias por el Material, muy bueno, pero tengo la duda de donde exactamente incorporo estos archivos, si me pudiera ayudar estaría muy agradecido. Saludos
Hola Abraham, esto yo lo he hecho metiéndolo en el child theme (tema hijo) de la web. También puedes utilizar el plugin «Code Snippets» para meter los códigos. Saludos.
Genial no tenia idea de algo así y ahora que lo miro pienso en varias cosas donde lo usaría. Gracias
Hola Alberto un gusto saludarte, estoy usando cada detalle que indicaste acá: https://albertoperojo.com/tutoriales-elementor/mostrar-y-ocultar-contenido-spoiler-en-elementor/ pero solo me queda una duda… Tengo dos botones y el código me funciona a la perfección pero necesito que cuando cliquee el boton A muestre ese contenido y cuando haga clic en el botón B oculte el contenido del botón A y muestre solo el contenido del botón B, de igual manera a la inversa… Serías tan amable de ayudarme por favor
Hola José, necesitas definir otro botón con otro clase y repetir el código que hace la inteacción. Te pongo un ejemplo para el botón B:
jQuery(document).on(‘click’, ‘div.botonB .elementor-button-link’, function (event) {
event.preventDefault();
jQuery(‘.contenido-que-quieres-ocultar’).hide();
});
Gracias por el tip, una consulta. ¿Cómo puedo cambiar el texto al botón? – Que oculto diga «Leer más» y visible cambie a «Mostrar menos», gracias.