Comment créer un diaporama jQuery dynamique avec WordPress



20 mars 2011 28 commentaires

Logo JQuery
Dans ce tutoriel, nous verrons comment ajouter un diaporama dynamique à l’une de nos pages WordPress!

Le tout se fait en trois étapes facile :

  1. Inclure le JQuery nécessaire au diaporama.
  2. Créer un modèle spécifique à notre page.
  3. Ajouter les images.

Inclure le jQuery

Nous utiliserons l’extension JQuery Cycle pour notre animation. Parce qu’il est simple à implémenter et un API est disponible pour une plus grande personnalisation.

Vous n’avez qu’à mettre ceci entre les balises « head » de votre fichier header.php

<!-- include Cycle plugin -->
<script type="text/javascript" src="http://cloud.github.com/downloads/malsup/cycle/jquery.cycle.all.latest.js"></script>
<script type="text/javascript">
	jQuery(document).ready(function( $ ) {
		$('.slideshow').cycle({
			fx: 'fade' // choose your transition type, ex: fade, scrollUp, shuffle, etc...
		});
	});
</script>

En plus d’être extrêmement simple d’utilisation, JQuery Cycle est hébergé dans les nuages et réduit donc le nombre de requêtes à votre serveur.

N’oubliez pas de charger jQuery dans le fichier functions.php si ce n’est pas déjà fait.

// Load jQuery
if ( !function_exists(core_mods) ) {
    function core_mods() {
        if ( !is_admin() ) {
            wp_deregister_script('jquery');
            wp_register_script('jquery', ("http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"), false);
            wp_enqueue_script('jquery');
        }
    }
    core_mods();
}

Cette petite fonction charge la dernière version de jQuery à partir des serveurs de Google.

Créer un modèle

Pour créer un modèle personnalisé, je conseille de copier page.php et de le renommer template-slider.php par exemple.

  • Ajoutez le commentaire PHP « Template name: Slider JQuery Dynamique » dans le haut.
  • Ajoutez le div « slideshow » à l’endroit désirer dans votre modèle.
<?php /* Template name: Slider JQuery Dynamique */?>
<?php get_header(); ?>
<div class="slideshow">
	<?php
		$argsThumb = array(
			'order'          => 'ASC',
			'post_type'      => 'attachment',
			'post_parent'    => $post->ID,
			'post_mime_type' => 'image',
			'post_status'    => null
		);
		$attachments = get_posts($argsThumb);
		if ($attachments) {
			foreach ($attachments as $attachment) {
				echo '<img src="'.wp_get_attachment_url($attachment->ID, 'thumbnail', false, false).'" />';
			}
		}
	?>
</div>
<?php get_footer(); ?>

La magie se trouve dans ce petit bout de code. Chaque image attachée à la page est insérée ici.

Ajouter les images

­
La dernière étape consiste à ajouter les images désirées dans l’éditeur d’image WordPress.

1. Ouvrez une page pour la modifier
2. Cliquer sur Ajouter une image

Editeur wordpress

3. Sélectionnez les fichiers à télécharger, puis cliquez sur le bouton Enregistrer toutes les modifications.

Enregistrer

4. Assurez-vous de sélectionner le modèle que vous avez créé au préalable dans la section attribut de la page.

Attributs de la page WordPress

À votre tour

Quand pensez-vous? De quelle façon faites-vous vos diaporamas dans WordPress?

Mise à jour 2011-09-17

- Charger jQuery avec wp_enqueue_script.

Sur le même sujet

Baniere Site5

Vous aimez cet article?


Eric Valois est l'éditeur et le fondateur de Bulle Développement. Vous pouvez suivre Bulle Développement sur Twitter, devenir fan sur Facebook ou bien vous inscrire par RSS.
  • http://www.seomix.fr Daniel Roch

    Très bon tutoriel. Par contre, dommage de ne pas avoir accès à une démo du rendu du diaporama…

    • http://bulledeveloppement.com Eric Valois

      Je suis bien d’accord. J’avais prévu une démo initialement. Par contre, pour ne pas avoir trouvé de façon efficace d’organiser mon thème avec la possibilité d’avoir plusieurs démos, j’ai abandonné le projet. Peut-être as-tu une idée?

  • http://www.rochmedia.com Confridin

    Il suffirait d’activer le multisite de WordPress, et de créer un thème de test dans un nouveau site créé dans un répertoire, par exemple: bulledeveloppement.com/test

  • Eric

    Merci pour ce trés bon tuto! J’ai une question… je crée actuellement mon thème et j’aimerai savoir si tu as des « pistes » sur la maniére d’implémenter un menu et un formulaire de contact dynamique utilisant jquery?!
    Merci d’avance!

    • http://bulledeveloppement.com Eric Valois

      Pour ce qui est d’un formulaire dynamique, je ne suis pas sûr de comprendre ce qui est dynamique? Sinon tu pourrais utiliser l’extension « Contact form 7 » qui est gratuite et très bien. Pour créer un menu, j’aime bien utiliser l’éditeur de menu par défaut. Par contre si tu veux un menu vraiment dynamique tu peux utiliser wp_list_pages(). Par la suite, lui appliquer l’animation JQuery que tu veux. Voici quelques exemples.

  • Edouard Duplessis

    Il aurait fallu utiliser wp_enqueue_script() pour mettre les js dans le head
    http://codex.wordpress.org/Function_Reference/wp_enqueue_script

  • http://twitter.com/Macxim Maxime Laforet

    Comment rajouter l’attribut alt pour les images ? 
    J’ai bien essayé de le rajouter dans le code mais il ne s’affiche pas en tant que tel.

    echo 'ID, 'thumbnail', false, false).'" />';

    • http://bulledeveloppement.com Eric Valois

      Utilise l’objet $attachment… alt= »‘.$attachment->post_title.’ »

      • http://twitter.com/Macxim Maxime Laforet

        Parfait, merci Eric, cela affiche bien le nom du fichier. Et si je veux par exemple mettre dans le alt le nom de l’article, c’est possible ? 

      • http://bulledeveloppement.com Eric Valois

        Oui, par contre tu va devoir être à l’intérieur de la boucle wp et utiliser l’objet $post. alt= »‘.$post->post_title.’ »

      • http://twitter.com/Macxim Maxime Laforet

        Excellent ! Ça fonctionne parfaitement. Merci beaucoup pour ton aide.

  • http://www.facebook.com/profile.php?id=1218766999 Mehdi Seddik

    J’aimerai ajouter un slideshow a mon site wordpress , Sachez que je suis un debutant et j’aimerai avoir l’aide d’une des personnes presentes sur cette page , et Mercii d’avance … :)

    • http://bulledeveloppement.com Eric Valois

      Le tuto est assez simple à suivre, suis les 3 étapes et tu ne devrais pas avoir de problèmes.

  • C Rios

    Cool , je viens de perdre une demi heure avec ce script qui ne fonctionne pas

    • http://bulledeveloppement.com Eric Valois

      Très constructif ;) Non sans blague, je viens de refaire le tuto et tout fonctionne bien. 

  • Dreadstock

    Bonjour, 
    Meri 

  • Dreadstock

    Bonjour, 
    Merci pour ce tuto. Je l’ai mis en pratique et il me convient très bien. J’ai un seul problème, je ne veux pas faire apparaitre l’image que j’ai mis à la une sur l’article dans la galerie jquery. Problème, elle fait partie de la galerie ! 
    Avez vous une Solution ? 

    • http://bulledeveloppement.com Eric Valois

      Effectivement cette technique peut être problématique. 
      1 – Pour régler ce problème tu peux créer une sous page « Gallery » et ajouter les images dans cette page.
      2 – Change ceci $post->ID par le ID de la page Gallery

  • Sebb Binant

    Super tuto. J’aimerai ajouter un diaporama en slideshow pour chaque catégorie (page ou post…) que je créee. Par exemple catégorie nature je mets uniquement les photos natures…

    Tu peux me conseiller qqch ? Est-il plus simple de ne pas passer par wordpress pour faire ça ?
    Merci bcp! Super site.

  • mathiew

    Bonjour,
    merci pour ce tuto, c’est vraiment ce que je cherchais!
    Je l’ai adapter avec cet autre tuto jquery: http://tympanus.net/codrops/2010/07/29/thumbnails-navigation-gallery/

    Comment  pourrait on afficher la légende de l’image?

  • mathiew

    j’ai trouvé!
     echo  ».apply_filters(‘the_excerpt’, $attachment->post_excerpt). »;

    • http://www.facebook.com/profile.php?id=747339402 Nicolas Binot

      Salut, effectivement le titre passe dans la galerie, mais chez moi il est intégré comme une image à part entière : donc j’ai l’image qui apparaît, puis suit le titre, puis l’autre image, puis le titre et ainsi de suite. Je ne vois pas ou je fais l’erreur. Saurais tu m’éclairer ?

      EDIT : Finalement non… va comprendre…

  • birce

    bonjour, j’aurai apparement un probleme de syntax a la 15 ligne soit à la ligne :
    php /* Template name: Slider JQuery Dynamique *
    Je ne comprend pas bien,et le « echo » ? Je le copie?Merci beaucoup, je rame depuis 8h00

    • http://bulledeveloppement.com Eric Valois

      Je ne vois pas le problème avec le echo. Est-ce que tu peux me donner ton message d’erreur?

  • http://www.facebook.com/profile.php?id=747339402 Nicolas Binot

    Bonjour,

    Merci pour cette solution d’intégration.Cependant j’ai un petit soucis, par moment la galerie ne se charge pas ! Une idée, le même soucis chez vous ?

    • http://bulledeveloppement.com Eric Valois

      Oui, je pense que tu dois donner un width et un height à tes DIV. #slideshow div{height: XXpx; width: XXpx;} 

      • http://www.facebook.com/profile.php?id=747339402 Nicolas Binot

        Absolument bien vu.
        Je tiens aussi a vous faire part d’une superbe découverte qui va dans le sens de ton tuto avec les ACF mais en tt gratos : http://www.cozmoslabs.com/3747-wordpress-creation-kit-a-sparkling-new-custom-field-taxonomy-and-post-type-creator/

        Merci à toi Eric