Come integrare owl carousel nel tema senza utilizzare un plugin?

6 mar 2015, 11:32:00
Visualizzazioni: 43.3K
Voti: 2

Sto cercando di integrare owl.carousel nel mio tema ma non riesco a farlo funzionare. Le istruzioni sulla pagina non sono per WordPress quindi ho bisogno di aiuto su come mettere correttamente in coda i file richiesti e chiamare (inizializzare) il carousel.

Ho aggiunto i seguenti file nella directory del mio tema situata in MyTheme/inc/owl/

  • AjaxLoader.gif
  • grabbing.png
  • owl.carousel.css
  • owl.carousel.js
  • owl.carousel.min.js
  • owl.carouselinit.js -> Questo è il "file per chiamare la funzione di inizializzazione di Owl"
  • owl.theme.css
  • owl.transitions.css

Nel mio file functions.php metto in coda i file richiesti:

/*-------------------------------------------------------------------------------
Aggiungi Owl Carousel
-------------------------------------------------------------------------------*/

// Metti in coda Script/Stili per il nostro 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' );

Nel file "owl.carouselinit.js" ho semplicemente aggiunto la funzione di inizializzazione elencata nel sito web che è:

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

Inoltre, ho guardato alcuni plugin che utilizzano owl carousel e sembra che stiano utilizzando (enqueue) solo 3 file per utilizzare owl carousel.

Grazie in anticipo

0
Tutte le risposte alla domanda 3
0

Stai riutilizzando gli handle per lo script e gli stili. Questi devono essere valori univoci (vedi Riferimento WP Codex)

Dovrebbe essere qualcosa del genere:

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' );

Non è necessario caricare sia owl.carousel.js che il .min.js. Funzionalmente questi due file dovrebbero essere identici. La versione .js è il codice completo che vorresti usare in un ambiente di sviluppo, mentre il .min.js è una versione minimizzata del codice ottimizzata per dimensioni ridotte del file e viene utilizzata in ambiente di produzione.

5 nov 2016 21:46:37
2

Non pretendo di essere un esperto di WP (né mi interessa esserlo), ma ho avuto lo stesso problema cercando di far funzionare Owl Carousel su un sito WordPress per un cliente, e ho una soluzione poco elegante.

Innanzitutto, come ha sottolineato steamfunk, WordPress richiede che tutto il jQuery utilizzi jQuery invece di $.

La mia inizializzazione sarebbe qualcosa del genere:

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

Anch'io ho avuto problemi a capire come caricare correttamente il mio script di inizializzazione, quindi ho deciso di inserire lo script direttamente nel template dove mi serviva il carousel.

Puoi comunque mantenerlo nel footer, e semplicemente mostrare lo script condizionalmente:

<?php if(is_page('nome_della_pagina')): ?>
    <script>
        // Il tuo codice di inizializzazione
    </script>
<?php endif ?>

Owl Carousel è l'unico plugin con cui ho avuto problemi nel fare le cose "alla maniera di WordPress", quindi potrebbe essere un problema di Owl Carousel. Non lo so - ripeto, non sono un esperto.

Tuttavia, la mia soluzione potrebbe non essere elegante, ma ha funzionato nella mia situazione e non ho trovato una buona risposta a questa domanda, ecco perché la condivido qui.

5 nov 2016 21:16:06
Commenti

Puoi semplicemente scrivere jQuery(function($) { $('.owl-carousel').owlCarousel()});

fuxia fuxia
5 nov 2016 21:39:57

Oh bene! Non ci avevo pensato

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

Non è necessario accodare sia owl.carousel.js che owl.carousel.min.js, basta utilizzare esclusivamente la versione minificata. Inoltre, WordPress richiede di incapsulare il codice jQuery in un wrapper non conflittuale. Questo codice dovrebbe risiedere nel file owl.carousel-init.js dato che è quello che hai accodato. Dal tuo esempio, non risulta che il file "owl.carouselinit.js" sia stato accodato. Di seguito puoi osservare come il codice di inizializzazione di Owl Carousel appare all'interno di un wrapper non conflittuale:

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

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

    navigation: true, // Mostra i pulsanti successivo e precedente


    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,



  });
 });

Come puoi vedere, Owl Carousel richiede l'ID del div e non la classe. Questo è un esempio di classe .owl-carousel e questo sarebbe un ID #owl-carousel. Da quello che ho capito, Owl Carousel richiede l'utilizzo di un nome ID personalizzato come #custom-carousel che può essere trovato nel codice sopra. Spero che questo ti aiuti. SALUTI!

6 mar 2016 23:15:46