Introdução:
Olá pessoal, hoje eu venho mostra para vocês, como executar um vídeo a partir de um click na thumbnail, em um tema WordPress sem a necessidade der instalar vários plugins.
Nesse tutorial, eu só vou utilizar o plugin Advanced Custom Fields, para simplificar a criação dos campos personalizados e também a biblioteca chamada FitVids.JS para otimizar o seu player de vídeo.
Colocando a mão no código:
Primeiro de tudo, vamos fazer download do FitVids.JS e colocar o mesmo dentro da sua pasta JS do seu tema e agora abra o seu functions.php e adicione o código abaixo, mas tenha muita atenção no caminho do arquivo, se está apontando para a pasta correta.
<?php | |
function add_enqueue_scripts() { | |
wp_enqueue_script( 'fitvids', get_template_directory_uri() . '/assets/js/jquery.fitvids.js', array(), null, true ); | |
} | |
add_action( 'wp_enqueue_scripts', 'add_enqueue_scripts', 1 ); |
Agora vamos para a parte da criação dos custom fields, como eu disse antes eu vou utilizar o Advanced Custom Fields para facilitar a criação e aplicação dos campos.
Criação dos campos:
- Clique no Adicionar Novo, para iniciar a criação dos nossos campos:
- Eu vou criar uma regra, de quando o formato do post for igual à Vídeo eu vou adicionar os meus Campos Personalizados:
- Agora vamor criar dois campos, um para o link do vídeo que é um campo simples de texto e outro para imagem que já um pouco mais “chatinho” para configurar, por isso que eu vou deixar logo abaixo um GIF para facilitar a configuração:
- Agora é só publicar o nosso grupo de campos e iniciar o proxímo, passo:
Aplicando o vídeo no post:
Vamos para a aplicação do vídeo em nosso post, mas como eu apliquei uma regra para quando o formato do post for igual à vídeo, então o seu tema tem que ter suporte para Formatos de Post.
Se o seu tema não tiver o suporte é só aplicar no seu functions.php:
<?php | |
/** | |
* Add support for Post Formats. | |
*/ | |
add_theme_support( 'post-formats', array( | |
'video', | |
// 'aside', | |
// 'gallery', | |
// 'link', | |
// 'image', | |
// 'quote', | |
// 'status', | |
// 'audio', | |
// 'chat' | |
) ); |
Nesse código acima eu deixei o suporte para o formato de vídeo apenas, mas se você desejar para os outros estilos é só remover “//” que ele vai adicionar os outros formatos também.
Agora quando vocês selecionarem o formato de vídeo, automáticamente vai ser adicionado os nossos campos personalizados, que criamos anteriormente.
Criando o arquivo de conteúdo de vídeo:
Vamos para a parte mais “complicada” nesse tutorial, agora vamos fazer a criação do arquivo que vai receber o nosso código para a criação e verificação do vídeo.
Normalmente todos os loops de conteúdo:
<?php | |
if ( have_posts() ) : | |
// Start the Loop. | |
while ( have_posts() ) : the_post(); | |
/* | |
* Include the post format-specific template for the content. If you want to | |
* use this in a child theme, then include a file called called content-___.php | |
* (where ___ is the post format) and that will be used instead. | |
*/ | |
get_template_part( 'content', get_post_format() ); | |
endwhile; | |
// Post navigation. | |
posts_nav_link(); | |
else : | |
// If no content, include the "No posts found" template. | |
get_template_part( 'content', 'none' ); | |
endif; | |
?> |
a parte mais importante é o get_post_format() que vai fazer a verificação do nosso formato e chamar o nosso arquivo personalizado content-video.php.
No código abaixo eu vou criar e detalhar cada linha, para vocês e ficar simplificada a criação do nosso arquivo content-video.php:
<?php | |
/** | |
* The video content template. | |
* | |
*/ | |
?> | |
<article id="post-<?php the_ID(); ?>" <?php post_class('loop-videos'); ?>> | |
<header class="entry-header"> | |
<?php | |
if ( is_single() ) : | |
the_title( '<h1 class="entry-title">', '</h1>' ); | |
else : | |
the_title( '<h2 class="entry-title"><a href="' . esc_url( get_permalink() ) . '" rel="bookmark">', '</a></h2>' ); | |
endif; | |
?> | |
</header><!-- .entry-header --> | |
<div class="entry-content"> | |
<?php | |
// Apresenta o conteúdo somente dentro da single com o formato de vídeo | |
if ( is_single() ) : | |
the_content(); | |
// Pega o link do vídeo | |
$link_do_video = get_field('link_do_video'); | |
// Pega o link da imagem personalizada | |
$thumbnail_personalizada = get_field('thumbnail_personalizada'); | |
// Verifica se existe o link cadastrado | |
if( !empty( $link_do_video )) : ?> | |
<div class="video-featured"> | |
<?php | |
// https://codex.wordpress.org/Function_Reference/wp_oembed_get | |
echo wp_oembed_get( $link_do_video ); | |
// Veririfica se existe a imagem cadastrada | |
if( !empty($thumbnail_personalizada)) : ?> | |
<button id="play-video" style="background-image: url(<?php echo $thumbnail_personalizada; ?>);"> | |
<span class="dashicons dashicons-controls-play"></span> | |
</button> | |
<?php endif; ?> | |
</div> | |
<?php | |
endif; | |
// Apresenta o conteúdo na listagem dos post's junto com a função wp_trim_words() limitando em 40 caracteres | |
else : | |
echo wp_trim_words( get_the_content(), 40, '...' ); | |
endif; | |
?> | |
</div><!-- .entry-content --> | |
</article><!-- #post-## --> |
Processos finais do tutorial
Agora é a parte da criação do nosso script e style para fazer tudo funcionar, perfeitamente…
Primeiramente, vamos criar o arquivo chamado script-video.js, ele vai ser o responsável para a aplicação do nosso fitVids e também da criação da função de play.
jQuery(document).ready(function($) { | |
// Adiciona o fitVids no frame de vídeo dentro da class = video-featured | |
$( '.video-featured' ).fitVids(); | |
// Adiciona o icone de video no título com post-format = video | |
$( '.loop-videos .entry-title').prepend('<span class="dashicons dashicons-video-alt"></span> '); | |
// Função do click com autoplay | |
$('#play-video').on('click', function(event) { | |
$('.fluid-width-video-wrapper iframe')[0].src += '&autoplay=1'; | |
event.preventDefault(); | |
$(this).fadeOut('slow', function(){ | |
$(this).remove(); | |
}); | |
}); | |
}); |
Como vocês viram toda a função de click foi relacionada com a fitVids, porque a classe .fluid-width-video-wrapper é aplicada automáticamente, através da interação com a galeria aplica por nós.
Agora é o processo mais “simples” que é parte de CSS, vamos para o style-video.css para da um estilo melhor a nossa apresentação.
.loop-videos .entry-title{ | |
display: table; | |
vertical-align: middle; | |
} | |
.loop-videos .entry-title .dashicons{ | |
display: table-cell; | |
font-size: 33px; | |
padding-right: 0.1em; | |
vertical-align: middle; | |
} | |
.loop-videos .video-featured{ | |
position: relative; | |
} | |
.loop-videos .video-featured > #play-video{ | |
cursor: pointer; | |
position: absolute; | |
background-position: top center; | |
background-size: cover; | |
top: 0; | |
right: 0; | |
bottom: 0; | |
left: 0; | |
width: 100%; | |
height: 100%; | |
border-radius: 0; | |
border: none; | |
z-index: 1; | |
} | |
.loop-videos .video-featured > #play-video .dashicons-controls-play{ | |
display: table; | |
font-size: 8em; | |
margin: 0 auto; | |
position: relative; | |
text-shadow: 4px 4px 2px rgba(150, 150, 150, 1); | |
color: #333333; | |
border-radius: 50%; | |
border: 5px solid #333333; | |
-moz-transition: all 1s ease-in; | |
-webkit-transition: all 1s ease-in; | |
-o-transition: all 1s ease-in; | |
transition: all 1s ease-in; | |
} | |
.loop-videos .video-featured > #play-video:hover .dashicons-controls-play{ | |
color: #ffffff; | |
border-color: #ffffff; | |
} |
Agora para finalizar vamos só chamar os nossos arquivos dentro do functions.php, mas como eu já falei antes… Tenha muita atenção com o caminho dos seus arquivos, porque se o mesmo estiver errado nada vai funcionar perfeita… 🙂
Outra coisa, eu apliquei de diferente foi o suporte do Dashicons para o frontend. Não sei todos o conhece, mas é uma galeira de icones padrão do próprio WordPress, mas o mesmo só funciona no frontend se você estiver logado como admin ou outro usuário, mas para “abilitar” ele é só aplicar a chamada dele como foi feito na linha “4” do código logo abaixo:
<?php | |
function odin_enqueue_video() { | |
// Adiciona Suporte a galeira de icones do proprio WordPress | |
wp_enqueue_style( 'dashicons' ); | |
// Aplicação do Script de Vídeo | |
wp_enqueue_script( 'script-video', get_template_directory_uri() . '/assets/js/script-video.js', array(), null, true ); | |
// Aplicação do Estilo de Vídeo | |
wp_enqueue_style( 'style-video', get_template_directory_uri() . '/assets/css/style-video.css', array(), null, 'all' ); | |
} | |
add_action( 'wp_enqueue_scripts', 'odin_enqueue_video', 1 ); |
Ufa!!! Acabamos, heheheheh….
Agora é só verificar como tudo ficou e se está tudo funcionando perfeitamente…
Espero que vocês tenham gostado desse tutorial e até breve
Por favor, se você gostou deixe seu like e também se possível compartilhe.