jQuery & WordPress – IntĂ©grer un carrousel photos avec carouFredSel

Mis Ă  jour le :

La bibliothĂšque jQuery est prĂ©sente nativement sous WordPress. Elle permet de faire fonctionner d’autres scripts JavaScript, utiles pour amĂ©liorer l’expĂ©rience utilisateur et l’interactivitĂ© de votre site.

Galerie photos, sliders, carrousel… sont autant de scripts disponibles en jQuery. Ce tutoriel aura pour objectif d’utiliser la galerie de mĂ©dias de WordPress pour gĂ©nĂ©rer un carrousel.

A propos de jQuery sous WordPress

Par dĂ©faut, WordPress embarque la bibliothĂšque jQuery sur laquelle repose le script que nous allons utiliser pour notre carrousel. Au fil des versions, elle est rĂ©guliĂšrement mise Ă  jour. Vous pouvez mĂȘme dĂ©sactiver celle de WordPress et prĂ©fĂ©rez une version hĂ©bergĂ©e dans un CDN comme celui de Google par exemple.

Création du carrousel photo avec carouFredSel pour WordPress

Étape n°1 – Ajout du script carouFredSel

Il existe plusieurs scripts permettant d’obtenir des carrousels… il en existe mĂȘme des dizaines. jCarousel figure parmi les plus connus mais son choix s’est portĂ© sur carouFredSel qui dispose d’effets sympathiques et visuellement efficaces.

Il nous le télécharger à partir du site officiel puis décompressez le ZIP :

  • CarouFredSel
    Script jQuery de type carrousel.
    Taille du fichier :
    200.20 KB

Vous obtenez alors 4 fichiers. Nous ne garderons que la version compressĂ©e, Ă  savoir jquery.carouFredSel-5.6.2-packed.js que nous renommerons carouFredSel.js – plus court Ă  retenir et Ă  utiliser dans les URLs.

Dans le dossier /wp-content/themes/NOM_DU_THEME/, modifiez le fichier functions.php en y ajoutant les lignes de code ci-dessous. Prenez soin de les placer entre balises PHP.

function carousel() {
wp_register_script( 'jquery-carousel' , get_template_directory_uri() . '/js/carouFredSel.js');
if (is_page('ma-page')) {
wp_enqueue_script( 'jquery-carousel' );
}
}
add_action('wp_enqueue_scripts', 'carousel');

Ces lignes auront pour effet d’enregistrer le script carouFredSel.js puis de le charger en front-end sur toutes les pages de votre site. Autrement dit, cela rajoutera la ligne suivante dans la partie head du code source :

<script src="http://votresite.fr/wp-content/themes/NOM_DU_THEME/js/carouFredSel.js" type="text/javascript"></script>

Une ligne que vous ne devez pas ajouter directement dans votre fichier header.php comme certains thĂšmes le font.

De plus, pour ĂȘtre optimal, je vous conseille d’utiliser des tags conditionnels pour ne charger ce dernier que sur les pages concernĂ©es du site.

N’oubliez pas de sauvegarder le fichier.

Étape n°2 – Ajout du code JavaScript dans la page

Étant donnĂ© que nous allons gĂ©nĂ©rer automatiquement le carrousel photo via PHP, nous devons crĂ©er un modĂšle de page. Pour ce faire, reportez au tutoriel sur la crĂ©ation d’un modĂšle de page sous WordPress.

Pour l’exemple, nous allons crĂ©er un fichier template-carousel.php reprenant une structure basique pour afficher l’en-tĂȘte et le pied de page. Libre Ă  vous de l’adapter en vous basant notamment sur le fichier page.php de votre thĂšme WordPress – ce qui aura pour effet de reprendre la structure d’une page statique de votre site.

<?php
/*
Template Name: Carousel
*/
?>
<?php get_header(); ?>

<script type="text/javascript">
jQuery(function() {
jQuery("#foo1").carouFredSel({
items : 3,
scroll : {
items : 1,
duration : 1000,
pauseDuration : 2000
},
auto : false,
prev : "#foo1_prev",
next : "#foo1_next"
}).parent().css("margin", "auto");
});
</script>

<?php get_footer(); ?>

Étape n°3 – CrĂ©ation de la boucle WordPress

C’est sans doute la partie la plus complexe. Cette boucle va rĂ©cupĂ©rer les images envoyĂ©es dans la bibliothĂšque de mĂ©dias de WordPress. Ici, nous ferons appel Ă  la taille miniature des fichiers images, plus pratique pour obtenir un rĂ©sultat fonctionnel.

InsĂ©rons donc les lignes suivantes juste aprĂšs l’ajout du script prĂ©cĂ©dent – soit au-dessus de get_footer.

<div class="list_carousel"> 

<a id="foo1_prev" href="#"><span>Précédent</span></a>
<a id="foo1_next" href="#"><span>Suivant</span></a>
<ul id="foo1">
<?php if ( have_posts() ) : while ( have_posts() ) : the_post();

$args = array(
'post_type' => 'attachment',
'numberposts' => -1,
'post_status' => null,
'post_parent' => $post->ID
);

$attachments = get_posts( $args );
if ( $attachments ) {
foreach ( $attachments as $attachment ) {
echo '<li>';
echo wp_get_attachment_image( $attachment->ID, 'thumbnail' );
echo '<p>';
echo apply_filters( 'the_title', $attachment->post_title );
echo '</p></li>';
}
}

endwhile; endif; ?>
</ul>

</div>

Étape n°4 – Ajout des styles CSS nĂ©cessaires

Ouvrez donc le fichier style.css puis ajoutez ces lignes de code CSS.

/* jQuery Carousel */
#slideshow-catalogue ul {
clear: both;
}
.list_carousel {
position: relative;
}
.list_carousel ul {
margin: 0;
padding: 0;
list-style: none;
display: block;
}
.list_carousel li {
color: #666;
text-align: center;
width: 185px;
height: 185px;
padding: 0;
margin: 6px 50px 6px 6px;
display: block;
float: left;
}
a.prev2, a.next2, a#prev-galery, a#next-galery {
width: 32px;
height: 47px;
display: block;
position: absolute;
top: 35px;
}
a.prev2, a#prev-galery {
background: url(images/arrow-left.png) no-repeat transparent;
}
a.next2, a#next-galery {
background: url(images/arrow-right.png) no-repeat transparent;
right: 0;
}
a.prev2 span, a.next2 span {
display: none;
}
.clearfix {
float: none;
clear: both;
}

Remarquez la présence de 2 fichiers images qui ne sont autres que des flÚches de navigation. Il vous faut donc en créer ou en télécharger sur le Web pour les afficher.

Résultat final

Capture d'écran - CarouFredSel.js sous WordPress
Un carrousel jQuery intégré à WordPress

Les boutons Précédent / Suivant permettent de faire défiler les images horizontalement. Comme indiqué plus haut, la CSS fait appel à des images par défaut.

Au final, nous aurons fait appel Ă  du code HTML, CSS, PHP et JavaScript le tout fonctionnant sous WordPress afin d’obtenir un carrousel photo. Sachez que cette technique peut ĂȘtre gĂ©nĂ©ralisĂ©e pour la plupart des scripts jQuery disponibles sur le marchĂ©. Et vous, amis lecteurs, quels sont vos scripts jQuery favoris ?

Avatar de Aurélien Denis

Protégez votre site WordPress

Vos données sont précieuses,
ne prenez pas le risque de tout perdre.
Confiez-moi votre maintenance !

Ces articles devraient t’intĂ©resser…

34 réponses
  1. Avatar de Nirina
    Nirina

    Bonjour Aurélien,

    D’abord merci pour le tuto!
    Je suis dĂ©butant, j’essai de faire un site par wordpress, j’ai suivis le tuto mais mais je n’arrive Ă  afficher rien comme carousel. Pourtant il n’y a pas d’erreur.

    Comment est-ce qu’on ajoute les images?
    Et y a-t -il des modifs Ă  faire dans les code?

    Merci beaucoup de m’aider qui que ce soit qui pourra.
    Nirina

  2. Avatar de slimane
    slimane

    Bonjour Aurélien,
    Je suis en train de réaliser bénévolement un site pour une association à but humanitaire sous WP avec un thÚme personnalisé.
    Je souhaite mettre un carrousel de photos dans le fichier index.php et un autre dans une page statique en particulier et pas sur les autres qui existent.
    Peux-tu me dire quelle est la marche Ă  suivre pour ce cas particulier ?

    Je te remercie d’avance,
    Slimane

  3. Avatar de Laurent
    Laurent

    Bonjour et merci beaucoup Aurélien.
    Je me permets juste une petite remarque de syntaxe dans le premier paragraphe de code, il manque les parenthÚses à la condition if (is_page( »)) {
    Les soucis rencontrés avec cette ligne viennent de là je pense.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Bien vu !

  4. Avatar de Marc
    Marc

    Bonjour,
    Je n’ai pas encore essayĂ© votre code mais j’ai une question. Comment faire pour placer le carrousel dans le pied de page ? J’aimerais que les images dĂ©filent en bas du site afin de ne pas surcharger le haut de page (dĂ©jĂ  une banniĂšre + image).

    Je vous remercie pour votre site à la fois complet et compréhensible.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Il suffit de placer le script et la boucle lĂ  oĂč vous souhaitez que le carrousel s’affiche. Dans footer.php pour le pied de page.

  5. Avatar de melamanix
    melamanix

    Bonjour Ă  tous et merci pour cet article !!

    VoilĂ  mon problĂšme : je veux mettre le carouFredSel sur chaque article.
    Le soucie est que la div class= »caroufredsel_wrapper » que crée le javascript ne se produit que sur le premier article et non sur les autres.
    Je ne comprends pas pourquoi ? Pourriez vous m’aider s’il vous plait,

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Plusieurs carrousel dans une mĂȘme page est dĂ©conseillĂ© ! Je ne sais pas si ce script le permet par contre…

      1. Avatar de Gilles
        Gilles

        Je ne peux pas aider des masses, mais il est possible d’afficher plusieurs caroussel comme le prouve cette page
        http://caroufredsel.dev7studios.com/examples/basic-carousels.php

        1. Avatar de melamanix
          melamanix

          Merci pour vos réponses,
          Gilles, je me pencherais sur cette page quand j’aurais plus de temps. C’est elle justement qui m’a permis de croire que c’Ă©tait possible.
          Du coup j’ai simplifiĂ© mon design, je me pencherais sur le sujet quand j’aurais fini mon site et je vous tiendrais au courant de mes trouvailles…

          Bonne journĂ©e …

          1. Avatar de Aurélien Denis
            Aurélien Denis

            Je pense qu’il faut passer l’ID dans la boucle qui affiche les diffĂ©rents articles (dans une page d’accueil ou blog je suppose) ainsi que l’ID de l’article car il faut pouvoir diffĂ©rencier les diffĂ©rents carrousels pour le script…

  6. Avatar de Forge
    Forge

    Bonjour Aurélien

    J’ai sans doute mal compris quelques points :
    – rien ne s’est affichĂ© tant que je n’ai pas insĂ©rer d’images dans la page utilisant le modĂšle crĂ©e
    – en ayant insĂ©rĂ© 7 images seules 5 s’affichent
    – en cliquant sur prĂ©cĂ©dent ou suivant, le navigateur me renvoi en haut de la page sans avoir bouger une image

    Merci d’Ă©clairer ma lanterne, un peu Ă©teinte sur le Jquery je dois dire ^^

    1. Avatar de Forge
      Forge

      En continuant Ă  chercher, je viens de me rendre compte que le JS n’Ă©tait pas chargĂ©, donc j’ai mis le lien en dur dans le header sans passer par le code functions.php.

      Par contre j’ai tout de mĂȘme cet effet au clic sur suivant ou prĂ©cĂ©dent, qui me remonte en haut de la page.

      C’est la derniĂšre petite chose… si tu avais une idĂ©e.
      Encore merci pour ce tuto !

  7. Avatar de ChDUP
    ChDUP

    Je perviens Ă  integrer carouFredSel sur une page wordpress.
    Le problĂšme est que j’utilise Ă©galement un diaporama d’image intĂ©grĂ© Ă  mon thĂšme qui utilise jQuery.
    Il semble y avoir conflit entre ces 2 versions de jQuery puisque si je desactive le caroussel, j’ai bien le diaporama et si je desactive le diaporama j’ai bien le caroussel, mais je ne parviens Ă  activer les 2 en mĂȘme temps.
    une piste ?
    d’avance merci

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Je ne suis pas assez calĂ© en jQuery pour fournir une solution de dĂ©pannage. Il doit falloir Ă©viter de charger les 2 scripts en mĂȘme temps ou quelque chose comme ça…

  8. Avatar de Easynico
    Easynico

    Bonjour. Un peu novice dans le milieu, n’est il pas possible d’intĂ©grer le plugin caroufredsel via l’outil « extensions » dans l’admin wordpress plutĂŽt que de rentrer des codes un peu partout.
    J’ai essayĂ© en vain de trouver le plugin caroufredsel en ajoutant une extension…aucune rĂ©ponse du moteur de recherche. Dommage, le plugin semble gĂ©nial!…Y a til donc une solution pour les noviceS?..

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Non il n’existe aucun plugin d’oĂč l’objet du tutoriel – ce qui reste toujours plus propre qu’un plugin pour information.

  9. Avatar de bruno
    bruno

    salut je voudrai savoir dans le template twenty eleven ou ce trouve le code du banner principal car je voudrai le remplacer par un slider mercis.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Sans doute dans header.php…

  10. Avatar de chris
    chris

    Bonjour,
    Merci pour ce blog qui a l’air super intĂ©ressant, et bien fait.
    Je viens de rĂ©aliser ce tuto, et j’obtiens l’erreur suivante :
    Parse error: parse error, expecting `'( » in C:\wampserver\www\wordpress\wp-content\themes\MarcelTheme\functions.php on line 8

    mon fichier functions.php (Ă  partir de la ligne 6):
    function carousel() {
    wp_register_script( ‘jquery-carousel’ , get_template_directory_uri() . ‘/js/carouFredSel.js’);
    if is_page(‘ma-page’) {
    wp_enqueue_script( ‘jquery-carousel’ );
    }
    }

    Des idĂ©es ? merci d’avance.

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Retapes l’apostrophe de la ligne 8 dans ton code pour voir si le signe est correct…

      1. Avatar de chris
        chris

        Bonsoir,
        Merci pour la rĂ©ponse mais oui, j’ai bien retapĂ© les apostrophes,et toujours le mĂȘme souci.
        Pour info, c’est la ligne :
        if is_page(‘ma-page’) {
        qui pose probleme, car lorsque je la commente, il n’y a plus cette erreur.
        (mais on est d’accord, ça ne fonctionne pas)
        ???

        1. Avatar de Fred
          Fred

          Je confirme que j’ai exactement la mĂȘme erreur sous MAMP (Ă  part le numĂ©ro de ligne car j’ai inclus Ă  la fin de functions.php mais sinon c’est bien sur la mĂȘme ligne).

          Est-ce que ce nom « ma-page » est Ă  modifier ? Je ne comprends pas ce test, Ă  vrai dire…

          1. Avatar de Aurélien Denis
            Aurélien Denis

            Oui tout Ă  fait ! Je n’ai pas Ă©tĂ© assez clair mais il s’agit d’utiliser une condition pour limiter l’affichage du carrousel Ă  la page concernĂ©e. Il faut indiquer le slug ou l’ID de la page dans cette ligne…

      2. Avatar de Fred
        Fred

        Bon, j’ai identifiĂ© la cause de l’erreur : c’est la parenthĂšse autour du test qui manque.

        En clair, il ne faut pas taper:
        if is_page(‘ma-page’) {
        mais :
        if (is_page(‘ma-page’)) {

        En revanche, mĂȘme si je n’ai plus le message d’erreur, je n’arrive pas Ă  obtenir mon carousel.

        J’ai remplacĂ© ‘ma-page’ par l’index de mon post (entre les quotes puis sans elles) et ça n’a aucun effet. Ma galerie apparaĂźt toujours dans le mode habituel de WP.
        Faut-il ajouter un tag ? Faire une opération additionnelle ?

        1. Avatar de Aurélien Denis
          Aurélien Denis

          Difficile Ă  dire, tout se joue Ă  la virgule prĂšs et je n’ai vraiment mais alors vraiment pas le temps de vĂ©rifier ton code… dĂ©solĂ© ! 🙁

          Pour autant, partages le avec un service comme pastebin ou sur un forum. Qui sait ? Quelqu’un pourra peut-ĂȘtre t’aider ! 😉

  11. Avatar de Boissiere
    Boissiere

    Bonjour,
    Merci pour toutes ces informations.
    J’aurais souhaitĂ© un complĂ©ment sur les types de carrousels proposĂ©s par wordpress. Je cherche Ă  intĂ©grer le carroussel : que l’on trouve sur le site de la Fnac ou celui de Arte.
    Voici le lien :
    http://videos.arte.tv/en/videos#/tv/coverflow///1/120/
    Pourriez vous me dire si cette présentation est possible sur wordpress et si oui, par quel widget ?
    Bien cordialement
    HélÚne
    Merci

    1. Avatar de Aurélien Denis
      Aurélien Denis

      Oui c’est possible… jQuery est indĂ©pendant du CMS utilisĂ©. En fait, WordPress est utile pour appeler dynamiquement du contenu comme des miniatures, des titres, des champs spĂ©ciaux, etc. sinon il faudrait crĂ©er tout le code HTML pour chaque Ă©lĂ©ment manuellement… interminable ! 🙂

      Par contre, c’est un carrousel de type CoverFlow façon Apple sous iTunes… faudrait regarder sur Google avec ces mots-clĂ©s ou dans le rĂ©pertoire de plugins de WordPress. 😉

      1. Avatar de Boissiere
        Boissiere

        Merci pour ces informations.
        Vous avez trouvé le mot que je cherchais. Cover flow.
        Vous voulez dire qu’il est possible d’ajouter une extension sur wordpress ?
        Ce plugin existe-t-il déjà sur certains thÚmes ?
        Merci pour votre rapidité.
        HélÚne

        1. Avatar de Marolles
          Marolles

          Bonjour,
          Dans le genre coverflow il y a WP-ImageFlow2 qui est trĂšs pratique.
          Un exemple sur mon site Ă  cette adresse : http://www.marolles.pasquier.nom.fr/multimedia/photos/balades/
          Et encore merci pour ces tutos toujours aussi complets.
          Joel

          1. Avatar de Boissiere
            Boissiere

            C’est exactement ce que je cherchais depuis 2 mois !
            Vous m’avez comprise ! Merci.
            N’hĂ©sitez pas Ă  m’en dire plus si vous avez d’autres infos.
            Par exemple : un thÚme serait il plus adapté ?
            Peut on gérer la surface du carrousel ?
            Merci
            HélÚne B

          2. Avatar de Aurélien Denis
            Aurélien Denis

            Il faut trouver un script jQuery s’en approchant puis l’intĂ©grer sous WordPress, sur une dĂ©marche similaire Ă  ce tutoriel ou regarder du cĂŽtĂ© des plugins WordPress.

          3. Avatar de Boissiere
            Boissiere

            Bonjour,
            J’ai tentĂ© d’intĂ©grer WP image Flow 2.
            J’ai un petit souci pouvez vous m’aider ?
            J’ai bien Image Flow dans les extentions, mais la vignette ne s’affiche pas dans le menu de crĂ©ation de page (par exemple, Ngen gallery : le logo apparait dĂ©s qu’il a Ă©tĂ© tĂ©lchargĂ©)
            Je ne suis pas passée par les fichiers installés dans le serveur FTP.
            Est ce que j’aurais du comme si j’installais jQuiry ?
            Votre site Marolle est trĂšs bien. Bravo !
            HélÚne