¿Cómo integrar owl carousel en un tema sin usar un plugin?

6 mar 2015, 11:32:00
Vistas: 43.3K
Votos: 2

He estado tratando de integrar el owl.carousel en mi tema pero no logro hacerlo funcionar. Las instrucciones en la página no son para WordPress, así que necesito ayuda sobre cómo encolar correctamente los archivos requeridos e inicializar el carrusel.

He agregado los siguientes archivos al directorio de mi tema ubicado en MyTheme/inc/owl/

  • AjaxLoader.gif
  • grabbing.png
  • owl.carousel.css
  • owl.carousel.js
  • owl.carousel.min.js
  • owl.carouselinit.js -> Este es el "llamado a la función inicializadora de Owl"
  • owl.theme.css
  • owl.transitions.css

En mi archivo functions.php encolo los archivos requeridos:

/*-------------------------------------------------------------------------------
Agregar Owl Carousel
-------------------------------------------------------------------------------*/

// Encolar Scripts/Estilos para nuestro owl.carousel.2
function agencyclix_add_owlcarousel() {
wp_enqueue_script ( 'jquery' );
wp_enqueue_script( 'owlcarousel', get_template_directory_uri() . '/inc/owl/owl.carousel.js', array( 'jquery' ), false, true );
wp_enqueue_script( 'owlcarousel', get_template_directory_uri() . '/inc/owl/owl.carousel.min.js', array( 'jquery' ), false, true );
wp_enqueue_script( 'owl-carousel', get_template_directory_uri() . '/inc/owl/owl.carousel-init.js', array( 'jquery' ), false, true );
wp_enqueue_style( 'owlcarousel-style', get_template_directory_uri() . '/inc/owl/owl.carousel.css' );
wp_enqueue_style( 'owlcarousel-style', get_template_directory_uri() . '/inc/owl/owl.theme.css' );
wp_enqueue_style( 'owlcarousel-style', get_template_directory_uri() . '/inc/owl/owl.transitions.css' );
}
add_action( 'wp_enqueue_scripts', 'agencyclix_add_owlcarousel' );

En el archivo "owl.carouselinit.js" simplemente agregué la función inicializadora listada en el sitio web que es:

$(document).ready(function(){
$('.owl-carousel').owlCarousel();
});

También he observado algunos plugins que usan owl carousel y parece que solo están usando (encolando) 3 archivos para usar el owl carousel.

Gracias por adelantado

0
Todas las respuestas a la pregunta 3
0

Estás reutilizando los identificadores (handles) para el script y los estilos. Estos deben ser valores únicos (consulta la Referencia del WP Codex)

Debería verse algo así:

wp_enqueue_script( 'owlcarousel', get_template_directory_uri() . '/inc/owl/owl.carousel.min.js', array( 'jquery' ), false, true );
wp_enqueue_script( 'owlcarousel-init', get_template_directory_uri() . '/inc/owl/owl.carousel-init.js', array( 'jquery' ), false, true );
wp_enqueue_style( 'owlcarousel-style', get_template_directory_uri() . '/inc/owl/owl.carousel.css' );
wp_enqueue_style( 'owlcarousel-theme', get_template_directory_uri() . '/inc/owl/owl.theme.css' );
wp_enqueue_style( 'owlcarousel-transitions', get_template_directory_uri() . '/inc/owl/owl.transitions.css' );

No necesitas cargar tanto owl.carousel.js como el .min.js. Funcionalmente estos dos archivos deberían ser idénticos. La versión .js es el código completo que querrías usar en un entorno de desarrollo y el .min.js es una versión minimizada del código optimizada para un menor tamaño de archivo y se usa en entornos de producción.

5 nov 2016 21:46:37
2

No me considero un experto en WP (ni me interesa serlo), pero tuve el mismo problema intentando hacer funcionar Owl Carousel en un sitio WordPress para un cliente, y tengo una solución poco elegante.

En primer lugar, como señaló steamfunk, WordPress requiere que todo jQuery use jQuery en lugar de $.

Mi inicialización se vería algo así:

jQuery(function() {
    jQuery('.owl-carousel').owlCarousel()
})

También tuve problemas para entender cómo encolar correctamente mi script de inicialización, así que decidí poner el script directamente en la plantilla donde necesitaba el carrusel.

Aún puedes mantenerlo en el pie de página, y simplemente mostrar el script condicionalmente:

<?php if(is_page('nombre_de_la_pagina')): ?>
    <script>
        // Tu código de inicialización
    </script>
<?php endif ?>

Owl Carousel es el único plugin con el que he tenido problemas para hacer las cosas "al modo WordPress", así que podría ser un problema con Owl Carousel. No lo sé - repito, no soy un experto.

Sin embargo, mi solución puede no ser elegante, pero funcionó para mi situación y no encontré una buena respuesta a esta pregunta, por eso lo comparto aquí.

5 nov 2016 21:16:06
Comentarios

Puedes simplemente escribir jQuery(function($) { $('.owl-carousel').owlCarousel()});

fuxia fuxia
5 nov 2016 21:39:57

¡Oh, genial! No había pensado en eso

Dan Fletcher Dan Fletcher
30 dic 2016 21:03:37
0
-1

No es necesario encolar ambos archivos owl.carousel.js y owl.carousel.min.js, con la versión minificada es suficiente. Además, WordPress requiere que cualquier código jQuery se coloque dentro de un envoltorio de no conflicto. Esto debería ir en el archivo owl.carousel-init.js que es el que has encolado. En tu ejemplo no has encolado el archivo "owl.carouselinit.js". Por favor revisa a continuación cómo se vería el código de inicialización de Owl dentro de un envoltorio de no conflicto:

jQuery(document).ready(function ($) {

  $("#custom-carousel").owlCarousel({

    navigation: true, // Mostrar botones de siguiente y anterior


    navigationText: [
      "<i class='fa fa-chevron-left icon-white'></i>",
      "<i class='fa fa-chevron-right icon-white'></i>"
    ],



    // pagination : false,
    //     paginationNumbers: false,

    slideSpeed: 300,
    paginationSpeed: 400,

    items: 3,
    itemsCustom: false,
    itemsDesktop: [1199, 3],
    itemsDesktopSmall: [980, 3],
    itemsTablet: [768, 3],
    itemsTabletSmall: true,
    itemsMobile: [415, 2],
    singleItem: false,
    itemsScaleUp: false,



  });
 });

Como puedes ver, Owl Carousel requiere el id del div y no la clase. Esto es una clase .owl-carousel y esto sería un id #owl-carousel. Por lo que entiendo, Owl Carousel requiere que uses un nombre de id personalizado como #custom-carousel que puede encontrarse en el código anterior. ¡Espero que esto ayude, SALUDOS!

6 mar 2016 23:15:46