Hestia: ¿Cómo mostrar un vídeo de fondo (sin plugin)?

18 comentarios

Hestia - Tutoriales

Por: Caribdis.Net

Publicada: 20 de agosto de 2017

En: Hestia
Actualizado para versión 3.0.14 – 21/03/2021

Ya tenemos tutoriales para reemplazar la imagen de la cabecera de la página de inicio por un vídeo de fondo, tanto en Zerif Lite como en OnePress.

Como habíamos prometido, hoy le toca el turno a Hestia de nuestros amigos de ThemeIsle.

Paso 1: añadir soporte para cabecera multimedia

Antes que nada, y como siempre recalcamos, es necesario usar un tema hijo. Las instrucciones para crear un tema hijo de Hestia se encuentran en esta entrada anterior.

Este primer paso es el mismo para todos los temas: tenemos que agregar el soporte para la cabecera multimedia en el archivo functions.php. A continuación del código existente y antes del cierre de la etiqueta ?> (si lo hubiere), pegaremos esta porción de código:

add_theme_support( 'custom-header', array(
 'video' => true,
 'width' => 5120,
 'height' => 2880,
) );

Nada más y guardar los cambios, el panel Cabecera multimedia estará presente en nuestro personalizador.

Hestia - Soporte para cabecera multimedia

Paso 2: imprimir la cabecera multimedia en el tema

El código anterior, como ya vimos en los otros dos tutoriales, no sirve nada más que para decirle al tema que acepte este tipo de cabecera. Para que de hecho la cabecera tome efecto y se visualice en el lugar indicado, hay que agregar el código correspondiente.

En el archivo functions.php pegamos lo siguiente:

function hestia_child_video_header() {
 if ( has_custom_header() ) :
 the_custom_header_markup();
 endif;
}
add_action('hestia_after_big_title_section_content_hook','hestia_child_video_header');
function hestia_child_video_iframe() {
?>	
<script>
jQuery(window).on('load', function() {
 jQuery("iframe#wp-custom-header-video").attr("width", "5120");
 jQuery("iframe#wp-custom-header-video").attr("height", "2880");
});
</script>
<?php
}
add_action( 'wp_footer', 'hestia_child_video_frame' );

El primero es un hook que imprime contenido dentro de la sección de título grande. Para más información sobre los hooks, ver esta entrada. La segunda porción de código nos servirá para que el tamaño del vídeo se ajuste de manera correcta a la pantalla.

El código completo de functions.php quedaría de la siguiente manera:

<?php
if ( !defined( 'ABSPATH' ) ) exit;
if ( !function_exists( 'hestia_child_parent_css' ) ):
 function hestia_child_parent_css() {
 wp_enqueue_style( 'hestia_child_parent', trailingslashit( get_template_directory_uri() ) . 'style.css', array( 'bootstrap' ) );
 if( is_rtl() ) {
 wp_enqueue_style( 'hestia_child_parent_rtl', trailingslashit( get_template_directory_uri() ) . 'style-rtl.css', array( 'bootstrap' ) );
 }
 }
endif;
add_action( 'wp_enqueue_scripts', 'hestia_child_parent_css', 10 );
function hestia_child_get_parent_options() {
 $hestia_mods = get_option( 'theme_mods_hestia' );
 if ( ! empty( $hestia_mods ) ) {
 foreach ( $hestia_mods as $hestia_mod_k => $hestia_mod_v ) {
 set_theme_mod( $hestia_mod_k, $hestia_mod_v );
 }
 }
}
add_action( 'after_switch_theme', 'hestia_child_get_parent_options' );
add_theme_support( 'custom-header', array(
 'video' => true,
 'width' => 5120,
 'height' => 2880,
) );
function hestia_child_video_header() {
 if ( has_custom_header() ) :
 the_custom_header_markup();
 endif;
}
add_action('hestia_after_big_title_section_content_hook','hestia_child_video_header');
function hestia_child_video_iframe() {
?>
<script>
jQuery(window).on('load', function() {
 jQuery("iframe#wp-custom-header-video").attr("width", "5120");
 jQuery("iframe#wp-custom-header-video").attr("height", "2880");
});
</script>
<?php
}
add_action( 'wp_footer', 'hestia_child_video_iframe' );

Ahora sí podemos agregar un vídeo a nuestra cabecera multimedia de Hestia, no sin antes hacer este ajuste de estilo necesario, en el caso de que usemos un archivo .mp4 subido a la biblioteca de medios (no se requiere para usar un vídeo de YouTube).

Paso 3: aplicar estilos para la correcta visualización (para archivo .mp4 subido a la biblioteca)

En el archivo style.css (preferiblemente) o en el recuadro CSS adicional del Personalizador, pegamos lo siguiente:

.wp-custom-header video {
    height: 100%;
    left: 0;
    -o-object-fit: cover;
    object-fit: cover;
    top: 0;
    -ms-transform: none;
    -moz-transform: none;
    -webkit-transform: none;
    transform: none;
    width: 100%;
}
.wp-custom-header iframe {
    z-index: -2;
}

Ahora sí veremos el vídeo de fondo.

Sea que optemos por ocultar el botón de reproducción o no, siempre será recomendable añadir una imagen de fondo para que se muestre durante la carga del vídeo, o en su lugar en los dispositivos móviles.

Para darle estilos al botón de reproducción, primero añadiremos el siguiente código en el archivo functions.php:

function hestia_child_video_controls( $settings ) {
 $settings['l10n']['play'] = __('<i class="fa fa-play"></i><span>Reproducir</span>');
 $settings['l10n']['pause'] = __('<i class="fa fa-pause"></i><span>Pausar</span>');
 return $settings;
}
add_filter( 'header_video_settings', 'hestia_child_video_controls' );

Por último, añadimos el siguiente código CSS (el estilo del botón será similar al del tema predeterminado de WP, Twenty Seventeen):

.wp-custom-header .wp-custom-header-video-button {
 display: initial;
 background-color: rgba(34, 34, 34, 0.5);
 border: 1px solid rgba(255, 255, 255, 0.6);
 color: rgba(255, 255, 255, 0.6);
 height: 45px;
 overflow: hidden;
 padding: 0;
 position: absolute;
 right: 20px;
 top: 75px;
 -webkit-transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.3s ease-in-out;
 transition: background-color 0.2s ease-in-out, border-color 0.2s ease-in-out, color 0.3s ease-in-out;
 width: 45px;
}
.wp-custom-header .wp-custom-header-video-button:hover,
.wp-custom-header .wp-custom-header-video-button:focus {
 border-color: rgba(255, 255, 255, 0.8);
 background-color: rgba(34, 34, 34, 0.8);
 color: #fff;
}
.wp-custom-header .wp-custom-header-video-button span {
 position: absolute;
 top: -9999px;
}

Recordemos que los vídeos de fondo, de manera predeterminada y por una cuestión de compatibilidad, se desactivan en los teléfonos móviles, y se muestran en resoluciones que superen los 900px. Si necesitamos que se visualicen en una resolución menor (por ejemplo en una tablet), tendremos que agregar el siguiente código en el archivo functions.php:

function hestia_child_video_settings( $settings ) {
  $settings['minWidth']  = 600;
  return $settings;
} 
add_filter( 'header_video_settings', 'hestia_child_video_settings' );

Nota importante: el procedimiento detallado en este tutorial requiere al menos WordPress 4.7 y Hestia 1.1.39 o superiores.

Últimas entradas de Caribdis.Net (ver todo)

Se responden dudas o consultas de los lectores acerca del contenido de esta publicación únicamente en su respectiva sección de comentarios. Así que asegúrate de suscribirte a las respuestas para recibirlas en tu casilla de correo electrónico (podrás cancelar la suscripción cuando lo desees). Con la suscripción al blog, recibirás en tu correo únicamente las nuevas entradas que se publiquen.

Ten en cuenta que muchas de las preguntas ya fueron respondidas en distintas entradas; recuerda que puedes usar el buscador de la barra lateral, y Ctrl+F para buscar texto dentro de una página.

Esta u otras entradas pueden contener enlaces de afiliado. Esto significa que si usas un enlace para adquirir algún producto recomendado, recibiremos una comisión de afiliados, la cual no te generará ningún costo adicional.

18 Comentarios

  1. Nico

    Eres un grande, muchas gracias por tu ayuda!

    Tdo correcto =)

    Responder
  2. Rafa

    Hola buenas llevo un par de días intentándolo pero no consigo que aparezca el video en la cabecera, no se si pueda ser a alguna actualización del tema Hestia ya que estoy utilizando al ultima 3.0.14, como comentaste en un mensaje anterior.

    Responder
    • Caribdis.Net

      Hola, Rafa.

      Gracias por tu comentario y por avisar del inconveniente.

      En efecto, en una de las últimas actualizaciones hubo algún cambio de código que dejó el vídeo por debajo del filtro de la cabecera. Ya está adaptado (cambia el hook y un par de estilos CSS).

      Saludos.

      Responder
  3. crea7ive

    Muchas gracias, funcionó de maravilla.

    Responder
  4. Juan Francisco

    Buenas tardes

    Seguí todos los pasos pero mi vídeo se ve en una franja estrecha y muy pequeña

    Alguna solución?
    Gracias

    Responder
    • Caribdis.Net

      Hola, Juan Francisco.

      Gracias por avisar. Este tutorial había quedado bastante viejito y no reflejó varios cambios que se introdujeron con las últimas versiones.

      Ya está actualizado.

      Saludos.

      Responder
  5. FRAN

    HOLA, CONSULTA ALGÚN OTRO TEMA PARECIDO A HESTIA, PERO A OTRO ME REFIERO.

    QUEDO A ESPERA DE ALGUNA RESPUESTA. DE CHILE.

    Responder
    • Caribdis.Net

      Hola, Fran.

      Neve es el último tema de ThemeIsle, que parece bastante completo. Si no, podés hacer una búsqueda en el repositorio, por ejemplo temas One Page.

      Saludos.

      Responder
  6. Oscar Ospino

    Buen dia. Sigue sin aparecer los videos en telefonos moviles? Ocurrio alguna actualizacion?

    Responder
    • Caribdis.Net

      Hola, Oscar.

      Los vídeos de fondo no aparecen en dispositivos móviles.

      Saludos.

      Responder
  7. Nico

    Hola muy buenas!

    Muy útil el post, gracias de antemano

    ¿Sabrías decirme si hay alguna opción de substituir el vídeo por una imagen una vez termine de reproducirse?

    Gracias,

    Un saludo!

    Responder
    • Caribdis.Net

      Hola, Nico.

      Gracias por tu comentario.

      No estoy segura de que sea posible, dado que es un vídeo de fondo. Podrías probar agregando la imagen como último frame y quitando el loop con el siguiente código:

      function hestia_child_noloop() {
          if ( is_front_page() ) {
      ?>
      <script type="text/javascript">
      jQuery(window).load(function () {
          jQuery('#wp-custom-header video').removeAttr('loop');
      });
      </script>
          <?php
      }
      }
      add_action( 'wp_footer', 'hestia_child_noloop' );
      

      De esta manera, al terminar de reproducir quedará visible la última imagen.

      Saludos.

      Responder
  8. Miguel

    Hola, mi página es lagrieta.com.mx Realicé todas las acciones al pie de la letra pero no sucedió lo que indicas en tu página. Anteriormente agregué un plug in recomendado en Themeisle para agregar un listón con video, me pregunto si ese plug in está impidiendo que se active el video de la cabecera y cómo puedo arreglarlo. Muchas gracias!

    Responder
    • Caribdis Diseño Web

      Hola, Miguel.

      El problema es que todavía se muestra la imagen de fondo de la sección. En el Personalizador, Secciones de la página de inicio > Sección de Título grande dale clic al botón Eliminar en la opción Fondo Título grande (y no olvides asignarla en Opciones de cabecera > Ajustes de la cabecera > Imagen de cabecera).

      Saludos.

      Responder
      • Miguel Sánchez

        Sí, excelente, muchas gracias!

        Responder
    • Miguel Sánchez

      Gracias! Ya lo he resuelto. Excelentes resultados!

      Responder
  9. Matteo

    Good morning, you have been my savior 😛 I was breaking my head trying to understand how to do what you just described.

    I made some changes in function.php https://pastebin.com/NbCQx54M and at style.css https://pastebin.com/pVBawQaY as you can see in the links.

    I have a question for you know: everything works perfect but on mobile, the video is replaced by the header image.

    How can I let the video be displayed also on mobile?

    Responder
    • Caribdis Diseño Web

      Hola, Matteo.

      Thanks for your comment! 🙂

      I’m afraid that’s not possible. Video backgrounds are disabled on mobile for compatibility issues, and the fact that mobile browsers don’t allow autoplay.

      Regards.

      Responder

Responder a Oscar Ospino Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Pin It en Pinterest

Compartir esto

Compartir es agradecer

Si esta publicación te resultó útil, puedes compartirla y ayudar a otros. ¡Gracias!