Accueil Assistance > Apparence > Défilement infini

Défilement infini

Plutôt que de devoir cliquer sur un lien pour passer à l’ensemble d’articles suivant, le défilement infini affiche automatiquement les articles suivants lorsque le lecteur approche du bas de la page.

Contrairement à de nombreuses fonctionnalités dans Jetpack, le Défilement infini n’est compatible qu’avec les thèmes qui prennent cette fonctionnalité en charge. Comme chaque thème est conçu légèrement différemment, la fonctionnalité Défilement infini requiert des informations sur le thème pour fonctionner correctement.

REMARQUE : désormais, la plupart des thèmes intègrent déjà la prise en charge du Défilement infini ! Pour vérifier si votre thème prend en charge le Défilement infini, accédez à JetpackParamètresÉcriture sur le tableau de bord de votre site et consultez la section « Améliorations des thèmes ».

Si votre thème n’intègre pas la prise en charge du Défilement infini, lisez les instructions détaillées sur l’ajout de la prise en charge à votre thème et l’utilisation de CSS pour personnaliser l’apparence.

Ajout de la prise en charge

L’activation du Défilement infini est très similaire à l’ajout de la prise en charge des miniatures d’article ou des styles de l’éditeur, car nous utilisons add_theme_support(). En fournissant quelques éléments clés d’informations à l’appel de add_theme_support(), le Défilement infini s’intègrera à votre thème en toute transparence.
Si votre thème est particulièrement soigné, comme les thèmes WordPress par défaut, l’ajout du Défilement infini est un jeu d’enfant. Voici comment procéder avec le thème Twenty Twelve :

add_theme_support( 'infinite-scroll', array(
 'container' => 'content',
 'footer' => 'page',
) );

Ce code vous permet de profiter pleinement du Défilement infini.

conteneur

Le paramètre container est au centre de l’ajout du défilement infini à votre thème : Il indique l’ID de l’élément HTML auquel le Défilement infini doit ajouter des articles supplémentaires. La valeur par défaut est content, mais elle peut correspondre à n’importe quel ID CSS valide qui apparaît dans le thème pris en charge et permet d’y ajouter des articles. Il s’agira généralement du conteneur parent des articles dans votre thème.

pied de page

L’un des problèmes du défilement infini, c’est que vous ne pouvez pas accéder au pied de page puisqu’à chaque fois que vous approchez de la fin de la page, de nouveaux articles sont chargés. Notre défilement infini intègre donc un pied de page fixe qui apparaît lors du défilement de la page vers le bas. Le paramètre footer facilite l’intégration de ce pied de page avec le design de votre thème. Lors du changement d’ID, le pied de page du défilement infini s’adapte en largeur afin de s’adapter à la perfection à votre design. En cas de valeur false, aucun nouveau pied de page n’est ajouté.
Vous pouvez également ajuster d’autres paramètres. Voici un exemple montrant toutes les valeurs par défaut de chaque option de configuration :

add_theme_support( 'infinite-scroll', array(
 'type' => 'scroll',
 'footer_widgets' => false,
 'container' => 'content',
 'wrapper' => true,
 'render' => false,
 'posts_per_page' => false,
) );

Décomposition de chaque option :

catégorie

type accepte deux valeurs différentes : scroll ou click. Ce paramètre permet de contrôler le comportement par défaut du Défilement infini. scroll permet le chargement automatique des articles lorsque le visiteur arrive en bas de la liste actuelle d’articles alors que click affiche le bouton Charger plus d’articles grâce auquel l’utilisateur contrôle à quel moment charger d’autres articles.

scroll est configuré par défaut mais si un thème possède des widgets de pied de page, il est possible de basculer sur click pour que les widgets soient accessibles.

footer_widgets

L’argument footer_widgets accepte de nombreuses valeurs et indique si un thème possède ou nom des widgets de pied de page. Si des widgets de pied de page sont présents, le type de défilement sera défini sur click pour que les widgets soient accessibles.

Dans sa version la plus simple, un booléen true ou false peut être défini suivant que le pied de page doit toujours ou jamais s’afficher, respectivement.
De plus, l’argument footer_widgets acceptera une chaîne représentant l’ID de la colonne latérale ('sidebar-1', par exemple) ou un tableau des ID de colonnes latérales. Le code de Défilement infini vérifiera si la ou les colonnes latérales contiennent des widgets et configurera l’argument footer_widgets en conséquence.

Chaque fois que cela est possible, nous recommandons fortement de fournir les ID de colonnes latérales si un thème insère des zones de widget sous la liste d’articles. En procédant ainsi, les utilisateurs du thème bénéficient de la meilleure expérience, le type de défilement étant déterminé de manière dynamique sur scroll ou click. Cela dit, si le type de défilement du thème est défini sur click dès le départ, l’argument footer_widgets peut être omis en toute sécurité.

Si toutes ces options ne suffisent pas, le filtre infinite_scroll_has_footer_widgets est disponible pour la configuration d’une logique avancée. Le filtre doit retourner une valeur booléenne et peut être utilisé pour détecter la présence de menus de navigation ou un visiteur utilisant un appareil mobile.

wrapper

L’argument wrapper se comporte de manière similaire à footer_widgets, à la différence qu’il accepte quelques valeurs différentes. Cet argument détermine si chaque ensemble d’articles supplémentaire est contenu ou non dans un élément div lors de l’ajout au conteneur spécifié dans l’argument précédent.
Si une valeur booléenne (true ou false) est spécifiée, les articles supplémentaires sont placés ou non entre balises div avec la classe infinite-wrap.

Pour placer les articles entre balises div avec une classe personnalisée, configurez l’argument wrapper sur une chaîne représentant la classe personnalisée.
Notez que l’argument wrapper n’accepte qu’une seule chaîne sans espace.

Il est généralement conseillé de placer les articles ajoutés entre balises div, sauf si cette pratique se traduit par un marquage non valide. Par exemple, si un thème utilise un élément de liste (ol, ul) pour afficher les articles, l’argument wrapper doit être désactivé pour que les éléments div n’apparaissent pas là où ils ne devraient pas.

Restituer

Le Défilement infini utilise une boucle WordPress standard pour restituer les articles supplémentaires qu’il ajoute, ainsi que des éléments de modèles dans le formulaire content-{post format}.php. Si un thème comprend au moins content.php, il est alors possible d’omettre l’argument render. Voici la fonction de rendu par défaut que le Défilement infini utilise :

while( have_posts() ) {
 the_post();
 get_template_part( 'content', get_post_format() );
}

Si une personnalisation plus poussée est nécessaire ou si un thème n’utilise pas les éléments de modèle content, vous devez spécifier un nom de fonction pour l’argument render. Cette fonction sera utilisée pour générer le marquage du Défilement infini. Cette fonction doit inclure la partie while() de la boucle de WordPress et peut utiliser n’importe quelle fonction disponible pour le thème lors de la restitution des articles.

posts_per_page

Par défaut, l’argument type contrôle le nombre d’articles chargés à chaque action du défilement infini. Pour le type scroll, sept (7) articles sont chargés chaque fois que le Défilement infini est activé. Pour le type click, la valeur « Les pages du blog doivent afficher au plus » du site trouvée sous Paramètres → Lecture est utilisée.
Si, toutefois, la mise en page d’un thème attend un certain nombre d’articles, l’argument posts_per_page remplacera les paramètres par défaut présentés dans le paragraphe précédent. Cette commande est avantageuse, par exemple, dans un thème possédant une mise en page sur trois colonnes où un nombre d’articles supérieur ou inférieur à trois entraînera une mise en page hétérogène.

Exemples

Au vu du nombre de thèmes et programmes de thèmes existants, nous souhaitons proposer un contrôle suffisant du comportement du Défilement infini lorsque ce dernier doit prendre en charge plusieurs thèmes. Cela dit, notre expérience sur WordPress.com a montré qu’en général chaque thème ne nécessite que très peu d’options de configuration. Pour le prouver, voici la configuration du Défilement infini des thèmes par défaut de WordPress.

Twenty Twelve
/**
 * Ajoutez la prise en charge du thème pour le défilement infini.
 *
 * @utilise add_theme_support
 * @retourner aucune valeur
 */
function twenty_twelve_infinite_scroll_init() {
 add_theme_support( 'infinite-scroll', array(
 'container' => 'content',
 ) );
}
add_action( 'after_setup_theme', 'twenty_twelve_infinite_scroll_init' );

Si vous ne connaissez pas le thème Twenty Twelve, sachez qu’il utilise des éléments du modèle content-{post format}.php et ne possède pas de zone de widget sous les articles. Nous avons donc omis les arguments footer_widgets et render. En réalité, comme la valeur container correspond à la valeur par défaut, il est également possible d’omettre cet argument. Nous l’avons laissé pour plus de clarté.

Twenty Eleven
/**
 * Ajoutez la prise en charge du thème pour le défilement infini.
 */
function twenty_eleven_infinite_scroll_init() {
 add_theme_support( 'infinite-scroll', array(
 'container' => 'content',
 'footer_widgets' => array( 'sidebar-3', 'sidebar-4', 'sidebar-5', ),
 'footer' => 'page',
 ) );
}
add_action( 'after_setup_theme', 'twenty_twelve_infinite_scroll_init' );

Le thème Twenty Eleven intègre deux zones de widget de pied de page qui ne seraient pas accessibles en faisant défiler la page du fait de l’ajout de nouveaux articles lorsque vous atteignez le bas de la page. Pour résoudre ce problème, nous avons inséré un tableau avec les ID de ces zones de widget dans footer_widgets. Désormais, si l’une de ces colonnes latérales possède un widget, notre extension Défilement infini le détecte et bascule automatiquement sur click (type de défilement où vous cliquez pour charger d’autres articles à la demande). De cette manière, le contenu de votre pied de page est toujours parfaitement accessible. Si votre thème comprend des widgets de pied de page, considérez cette approche afin d’améliorer sensiblement l’expérience de vos utilisateurs.

Twenty Ten
/**
 * Ajoutez la prise en charge du thème pour le défilement infini
 */
function twenty_ten_infinite_scroll_init() {
 add_theme_support( 'infinite-scroll', array(
 'container' => 'content',
 'render' => 'twenty_ten_infinite_scroll_render',
 'footer' => 'wrapper',
 ) );
}
add_action( 'after_setup_theme', 'twenty_ten_infinite_scroll_init' );
/**
 * Définissez le code de restitution à l’appel des articles,
 * Liaison aux éléments de modèles lorsque cela est possible.
 *
 * Remarque : doit définir une boucle.
 *
function twenty_ten_infinite_scroll_init() {
 get_template_part( 'loop' );
}

Le thème Twenty Ten utilise une structure de modèle légèrement différente pour restituer les articles. Nous devons donc proposer une fonction de rendu personnalisée au défilement infini.

Faites-le avec style

La dernière pièce manquante est inhérente à l’intégration complète du Défilement infini au design de votre site. Le Défilement infini repose sur un thème prenant en charge body_class. Il fournit aux développeurs de thèmes une flexibilité optimale pour améliorer l’expérience à l’aide de certaines classes de corps spécifiques : Chaque fois que le Défilement infini est actif, une classe infinite-scroll est disponible dans body ; si le type de défilement infini est défini sur « scroll », la classe neverending est également disponible. Une fois que le dernier article d’un blog a été chargé, la classe infinity-end est ajoutée. De cette manière, vous pouvez masquer votre pied de page standard et les liens de navigation et les réafficher une fois le défilement infini terminé. Exemple :

/* Masque les liens de navigation et le pied de page du site lorsque le défilement infini est actif */
.infinite-scroll #navigation,
.infinite-scroll.neverending #footer {
 display: none;
}
/* Réaffiche le pied de page une fois que tous les articles ont été chargés */
.infinity-end.neverending #footer {
 display: bloc
}

Il existe également deux éléments que vous souhaiterez configurer afin qu’ils s’adaptent à votre thème :

[...]

et

[…]

span.infinite-loader est l’indicateur de chargement qui apparaît pendant la récupération de nouveaux articles. Il est inséré en tant qu’enfant du conteneur. Il est possible, lorsqu’il n’est plus requis, de le masquer plutôt que de le supprimer du DOM. Assurez-vous que votre CSS prend en charge les deux configurations.
div#infinite-handle est le bouton Charger d’autres articles affiché lorsque type=click. Vous pouvez ignorer cet élément si votre thème utilisera toujours type=scroll et ne possèdera jamais de widgets de pied de page.

Événements JavaScript

Inévitablement, vous vous retrouverez confronté au fait que votre thème nécessitera certaines interactions JavaScript après l’ajout d’articles. Citons par exemple un thème qui utilise jQuery Masonry et doit déclencher le classement par cette bibliothèque d’articles supplémentaires. Prenant en compte ce besoin, nous déclenchons un événement après l’ajout des articles. Pour utiliser cet événement, surveillez simplement l’événement post-load lorsqu’il se déclenche sur document.body:

( function( $ ) {
 $( document.body ).on( 'post-load', function () {
 // De nouveaux articles ont été ajoutés à la page.
 } );
} )( jQuery );

Ajouter des arguments personnalisés à la requête de Défilement infini

Certains thèmes et certaines extensions ajoutent des arguments supplémentaires aux demandes d’articles, généralement pour modifier le tri ou le chargement des articles. Vous pouvez utiliser le filtre infinite_scroll_query_args pour ajouter également ces arguments supplémentaires au Défilement infini. Dans l’exemple ci-après, nous ajouterons 2 paramètres de tri personnalisés, order et orderby :

/**
 * Trier tous les résultats du Défilement infini par ordre alphabétique de nom d’article
 *
 * @tableau de paramètre $args
 * @filtre infinite_scroll_query_args
 * @retourner aucun tableau
 */
function jetpack_infinite_scroll_query_args( $args ) {
 $args['order'] = 'ASC';
 $args['orderby'] = 'name';
 return $args;
}
add_filter( 'infinite_scroll_query_args', 'jetpack_infinite_scroll_query_args' );

Résolution de problème

Le Défilement infini est configuré sur Charger plus d’articles au fur et à mesure que le lecteur défile vers le bas mais c’est le bouton « Articles plus anciens » qui s’affiche.

Votre thème possède-t-il des widgets de pied de page ? Si des widgets figurent dans la zone de widget de pied de page, le Défilement infini basculera automatiquement sur le bouton « Articles plus anciens » pour garantir la possibilité de voir les widgets de pied de page sur votre site. Si vous souhaitez charger les articles pendant le défilement, vous pouvez insérer les widgets dans une autre zone de widget, comme la colonne latérale. Si votre thème ne possède que des zones de widget de pied de page, vous souhaiterez peut-être basculer sur un autre thème proposant davantage d’options de zone de widget.

Autres remarques

Sachant que cette fonctionnalité requiert la prise en charge des thèmes pour être utile, nous avons intégré la prise en charge à Jetpack pour les thèmes par défaut de WordPress : Twenty Ten, Twenty Eleven, etc. Si vous utilisez l’un de ces thèmes, vous pouvez activer la fonctionnalité Défilement infini et profiter immédiatement de cette fonctionnalité. Si vous utilisez l’un des thèmes Automattic de WordPress.org, le défilement infini a déjà dû être intégrée via une mise à jour (la carte de la fonctionnalité invitera les utilisateurs à mettre à niveau les thèmes si une mise à jour est disponible pour le thème actif).

Informations sur la confidentialité

Cette fonctionnalité est désactivée par défaut. Si vous devez la désactiver, basculez sur le paramètre Charger plus d’articles à l’aide du comportement du thème par défaut dans la section Améliorations des thèmes sous Jetpack — Paramètres — Écriture.

En savoir plus sur l’utilisationd es données sur votre site
Données utilisées
Propriétaires/utilisateurs du site
Pour enregistrer les vues de la page via les statistiques de WordPress.com (option à activer ici pour suivre le nombre de vues de la page) avec les chargements supplémentaires, les informations suivantes sont utilisées : adresse IP, ID utilisateur WordPress.com (si connecté), nom d’utilisateur WordPress.com (si connecté), agent utilisateur, URL de visite, URL de référence, horodatage de l’événement, langue du navigateur, code du pays.
Visiteurs du site
Pour enregistrer les vues de la page via les statistiques de WordPress.com (option à activer ici pour suivre le nombre de vues de la page) avec les chargements supplémentaires, les informations suivantes sont utilisées : adresse IP, ID utilisateur WordPress.com (si connecté), nom d’utilisateur WordPress.com (si connecté), agent utilisateur, URL de visite, URL de référence, horodatage de l’événement, langue du navigateur, code du pays.
Activité suivie
Propriétaires/utilisateurs du site
Le nombre de vues de la page sera suivi à chaque chargement supplémentaire (défilement vers le bas de la page et chargement automatique d’un nouvel ensemble d’articles). Si le propriétaire du site a activé Google Analytics pour cette fonctionnalité, un événement de vue de la page sera également transmis au compte Google Analytics approprié à chaque chargement supplémentaire.
Visiteurs du site
Le nombre de vues de la page sera suivi à chaque chargement supplémentaire (défilement vers le bas de la page et chargement automatique d’un nouvel ensemble d’articles). Si le propriétaire du site a activé Google Analytics pour cette fonctionnalité, un événement de vue de la page sera également transmis au compte Google Analytics approprié à chaque chargement supplémentaire.
Données synchronisées (Lire plus)
Propriétaires/utilisateurs du site
Nous synchronisons les options identifiant si la fonctionnalité est activée et si Google Analytics est intégré à cette fonctionnalité.
Visiteurs du site
Aucun.
  • Table des matières

  • Catégories