Criando Slide para o WordPress sem plugin

Criando Slide para o WordPress sem plugin

Existem diversos plugins para slide em padrão WordPress para usarmos, porém, as vezes precisamos de algo novo e diferente do habitual para adaptar ao projeto desejado. Seguindo essa linha, também considero que quanto menos plugin usarmos em nosso WordPress, mais leve e compacto deixaremos ele. Sempre que possível, crie seus próprios recursos/plugins.

Neste post irei mostrar como criar um slide diretamente no tema, sem precisar de qualquer plugin.

Usaremos o post_type padrão para isso, criando um link no menu administrativo do WordPress para que possa inserir a imagem e o texto. E também com formato carousel do bootstrap, mas você pode usar a galeria que desejar para isso.

Vá ao seu arquivo function.php e insira o seguinte dados:

//Banner
function banner_post_type() {

    $labels = array(
        'name'                => _x( 'Banner', 'Post Type General Name', 'roots' ), // nome
        'singular_name'       => _x( 'Banner', 'Post Type Singular Name', 'roots' ), // nome único
        'menu_name'           => __( 'Banners', 'roots' ),
        'parent_item_colon'   => __( 'Parent Banner:', 'roots' ),
        'all_items'           => __( 'All Banners', 'roots' ),
        'view_item'           => __( 'View Banner', 'roots' ),
        'add_new_item'        => __( 'Add New Banner', 'roots' ),
        'add_new'             => __( 'Add Banner', 'roots' ),
        'edit_item'           => __( 'Edit Banner', 'roots' ),
        'update_item'         => __( 'Update Banner', 'roots' ),
        'search_items'        => __( 'Search Banner', 'roots' ),
        'not_found'           => __( 'Not found', 'roots' ),
        'not_found_in_trash'  => __( 'Not found in Trash', 'roots' ),

        );
    $args = array(
        'label'               => __( 'banner', 'roots' ),
        'description'         => __( 'Products Description', 'roots' ),
        'labels'              => $labels,
        'supports'            => array( 'title', 'editor', 'thumbnail',), // define o que teremos no post type, no caso teremos: título, descricão e uma imagem
        'menu_icon' => get_stylesheet_directory_uri() . '/assets/img/banners.png', // define o ícone no Menu
        'hierarchical'        => false,
        'public'              => true,
        'show_ui'             => true,
        'show_in_menu'        => true,
        'show_in_nav_menus'   => false,
        'show_in_admin_bar'   => true,
        'menu_position'       => 5, // onde ele irá aparecer no menu
        'can_export'          => true,
        'has_archive'         => false, // aparecer ou não nos arquivos
        'exclude_from_search' => true, // excluir ou não das buscas no site
        'publicly_queryable'  => true,
        'rewrite'             => false,
        'capability_type'     => 'post',
        );
    register_post_type( 'banner', $args );

}
// inicia o post type no menu
add_action( 'init', 'banner_post_type', 0 );

Feito isso poderá ver no painel administrativo:

captura-de-tela-2016-10-03-as-15-50-23

Agora crie 1 ou mais posts para que possamos fazer um loop no nosso tema com as imagens, inserindo imagem via “imagem destacada/thumbnail”.

Então você vai implantar o código onde quer que o slide apareça no site. Geralmente eu crio um arquivo separado em php para não misturar ao código do site com o código do nosso banner, e chamo através de um include, mas não tem problema algum inserir diretamente na home do site ou na página que desejar.

Insira o código:

<?php
  global $posts;
  $n=0;
  $args = array( 'post_type' => 'banner', 'posts_per_page' => 8 );
  $loop = new WP_Query( $args );
  if($loop->have_posts()):
?>

<div class="banner-slide">
    <div id="myCarousel2" class="carousel slide" data-ride="carousel">

<!-- Circulo indicador abaixo do slide -->
     <ol class="carousel-indicators">
       <?php while($loop->have_posts()): $loop->the_post(); ?>
         <li data-target="#myCarousel2" data-slide-to="<?php echo $n++; ?>"></li>
       <?php endwhile; ?>
     </ol>

   <div class="carousel-inner">
   <?php while ( $loop->have_posts() ) : $loop->the_post(); ?>
   <div class="item <?php if (0 == $b) { echo "active"; } ?> ">


         <!-- Wrapper for slides -->
         <div class="carousel-inner" role="listbox">
           <div class="item active">
            <?php if ( has_post_thumbnail() ) { the_post_thumbnail();} ?> <!-- imagem do banner -->
             <div class="carousel-caption">
               <h3><?php the_title(); ?></h3><!-- título do banner -->
               <?php the_content() ;?><!-- conteúdo do banner -->
             </div>
           </div>


     </div>
     <?php $b++ ?>
    <?php endwhile ?>
   </div>
   

<!-- Apresenta as setas direcionais -->
    <a class="left carousel-control" href="#myCarousel2" role="button" data-slide="prev">
        <span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
      </a>

      <a class="right carousel-control" href="#myCarousel2" role="button" data-slide="next">
        <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
      </a>


  </div><!-- /.carousel -->

</div>


    <?php endif; wp_reset_query(); ?>

Como é apenas um exemplo, criei os comandos necessários para que ele apareça no seu banner no formato do bootstrap, mas você pode usar e estilizar do jeito que preferir, uma das vantagens de não usar plugins.

Qualquer dúvida só comentar! Vlw galera!

Rubens Junior

Sou um desenvolvedor com 16 anos de experiência em tecnologia, especializado em desenvolvimento front-end com Angular e tecnologias web. Nos últimos anos, expandi meu conhecimento para linguagens como C++, C e Python, aprofundando-me em Inteligência Artificial e desenvolvimento de jogos com Unreal Engine. Além disso, sou dono de uma agência de publicidade e possuo amplo conhecimento em PHP avançado com Laravel, marketing digital e desenvolvimento de aplicativos Android e iOS utilizando Ionic ou Single Page Applications (SPA).