Ondersteuning homepage > Weergave > Oneindig scrollen

Oneindig scrollen

In plaats van op een link te moeten klikken om naar de volgende reeks berichten te gaan, zorgt Oneindig scrollen ervoor dat de volgende berichten automatisch worden weergegeven wanneer de lezer de onderkant van de site bereikt.

In tegenstelling tot veel Jetpack-functies werkt Oneindig scrollen alleen met thema’s die deze functie ondersteunen. Aangezien elk thema net iets anders is opgebouwd, heeft de functie Oneindig scrollen informatie nodig over het thema om goed te kunnen werken.

OPMERKING: Oneindig scrollen is al geïmplementeerd in de meeste nieuwe thema’s! Om te controleren of je thema Oneindig scrollen ondersteunt, ga je naar JetpackInstellingenSchrijven in het dashboard van je site en kijk je onder het gedeelte “Themaverbeteringen“.

Als Oneindig scrollen niet in je thema is geïntegreerd, lees dan verder voor meer informatie over het toevoegen van ondersteuning aan je thema en het gebruik van CSS om de opmaak aan te passen.

Ondersteuning toevoegen

Het inschakelen van Oneindig scrollen is zeer vergelijkbaar met het toevoegen van ondersteuning voor miniatuurweergaven of editor-stijlen aan berichten, omdat we gebruikmaken van add_theme_support(). Door een klein beetje belangrijke informatie toe te voegen bij het oproepen van add_theme_support() kan Oneindig scrollen naadloos in je thema worden geïntegreerd.
Als je een thema gebruikt dat op een goede manier is opgebouwd, zoals de standaardthema’s van WordPress, is het een peulenschil om Oneindig scrollen toe te voegen. Zo doe je dit voor Twenty Twelve:

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

Als je dit doet, werkt de functie Oneindig scrollen helemaal perfect.

container

De parameter container is cruciaal voor het toevoegen van Oneindig scrollen aan je thema: hiermee wordt het ID-nummer van het HTML-element gespecificeerd waaraan Oneindig scrollen aanvullende berichten moet toevoegen. De standaardwaarde is content, maar dit kan elke geldige CSS ID zijn die in het ondersteunde thema wordt weergegeven en is geschikt om berichten aan toe te voegen. Dit is normaal gesproken de bovenliggende container van de berichten in je thema.

footer

Een van de problemen die zich voordoet bij Oneindig scrollen, is dat je geen toegang kunt krijgen tot de voettekst van een pagina, omdat nieuwe berichten worden geladen wanneer je de onderkant bereikt. Onze functie Oneindig scrollen bevat een vaste voettekst die tevoorschijn komt terwijl je naar beneden scrolt op de pagina. De parameter footer helpt je bij het invoegen van deze voettekst met het ontwerp van je thema. Door een andere ID te gebruiken, wordt de voettekst van Oneindig scrollen automatisch aan de breedte ervan aangepast, zodat deze functie perfect in je ontwerp past. Als je in plaats daarvan de waarde false gebruikt, zou er geen nieuwe voettekst worden toegevoegd.
Er zijn ook andere parameters die je kunt verbeteren. Hieronder staat een voorbeeld van alle standaardwaarden voor elke configuratie-optie:

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

Laten we elke optie eens afzonderlijk bekijken:

type

type accepteert een van de twee volgende waarden: scroll of click. Hiermee wordt het standaardgedrag van Oneindig scrollen geregeld. scroll zorgt ervoor dat berichten automatisch worden geladen wanneer de bezoeker de onderkant van de huidige berichtenlijst bereikt, terwijl click een knop met Meer berichten laden toevoegt, waarmee de gebruiker kan kiezen wanneer er meer berichten geladen moeten worden.

scroll is de standaardwaarde, maar als een thema voettekst-widgets bevat, dan kan deze waarde worden omzeild met click, zodat de widgets toegankelijk zijn.

footer_widgets

Het argument footer_widgets accepteert verschillende waarden en geeft aan of een thema voettekst-widgets heeft of niet. Als er voettekst-widgets aanwezig zijn, moet het scrolltype worden ingesteld op click, zodat de widgets toegankelijk zijn.

De voettekst kan met een boolean-waarde worden ingesteld op true of false, waarmee respectievelijk wordt aangegeven of de voettekst altijd of nooit weergegeven moet worden.
Bovendien kan er ofwel een reeks voor een sidebar-ID (bijvoorbeeld 'sidebar-1') of een matrix met sidebar-ID’s worden opgegeven voor het argument footer_widgets. De code van Oneindig scrollen controleert of de sidebar(s) widgets bevat(ten) en past het argument footer_widgets hieraan aan.

Waar mogelijk, raden we je sterk aan om sidebar-ID’s op te geven als een thema widgetgebieden onder de berichtenlijst plaatst. Door dit te doen, wordt de beste ervaring geboden voor de gebruikers van het thema door dynamisch te bepalen of het scrolltype scroll of click moet zijn. Als een thema echter vanaf begin af aan click specificeert als het type, dan kan het argument footer_widgets zonder problemen worden weggelaten.

Als al die opties nog niet genoeg waren, dan is het filter infinite_scroll_has_footer_widgets beschikbaar voor geavanceerde logica. Het filter moet een boolean-waarde retourneren en kan worden gebruikt om de aanwezigheid van navigatiemenu’s of een bezoeker met een mobiele device te detecteren.

wrapper

Het argument wrapper gedraagt zich op een vergelijkbare manier als footer_widgets, aangezien het maar een paar verschillende waarden accepteert. Dit argument bepaalt of er een set aanvullende berichten in een div-element aanwezig is wanneer het wordt toegevoegd aan de container die in het voorafgaande argument is gespecificeerd.
Als er een boolean-waarde (true of false) is gespecificeerd, wordt een div met de klasse infinite-wrap rondom de aanvullende berichten geplaatst of juist niet.

Om de berichten samen te voegen in een div met een aangepaste klasse, zet je het argument wrapper op een reeks die naar de aangepaste klasse verwijst.
Denk eraan dat het argument wrapper slechts één reeks zonder tussenruimte accepteert.

Het is over het algemeen een goed idee om de toegevoegde berichten samen te voegen in een div, tenzij dit leidt tot een ongeldige opmaak. Als een thema bijvoorbeeld gebruikmaakt van een lijstelement (ol, ul) om berichten weer te geven, dan moet de wrapper worden uitgeschakeld, zodat de div-elementen niet worden weergegeven op plaatsen waar ze niet thuishoren.

Render

Oneindig scrollen maakt gebruik van een standaard WordPress-loop om aanvullende berichten weer te geven die worden toegevoegd. Hierbij wordt gebruikgemaakt van sjabloon-onderdelen in het formaat content-{post format}.php. Als een thema in ieder geval content.php bevat, dan kan het argument render worden weggelaten. Hieronder staat de standaard weergavefunctie die door Oneindig scrollen wordt gebruikt:

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

Als er meer aanpassing nodig is of als een thema geen sjabloon-onderdelen content gebruikt, moet een functienaam worden opgegeven voor het argument render en wordt die functie gebruikt om de opmaak voor Oneindig scrollen te genereren. De functie moet het gedeelte while() van de WordPress-loop bevatten en kan elke beschikbare functie van het thema gebruiken om berichten weer te geven.

posts_per_page

Het argument type regelt standaard hoeveel berichten moeten worden geladen wanneer Oneindig scrollen actief is. Voor het type scroll worden elke keer dat Oneindig scrollen wordt geactiveerd zeven (7) berichten geladen. Voor het type click wordt de waarde ‘Maximumaantal weer te geven pagina’s’ gebruikt, die kan worden ingesteld via Instellingen → Lezen.
Als de lay-out van een thema echter een bepaald aantal berichten verwacht, omzeilt het argument posts_per_page de standaardwaarden die in de vorige paragraaf zijn behandeld. Deze controle is bijvoorbeeld nuttig in een thema met een lay-out van drie kolommen, waar meer of minder dan drie berichten tot een oneven lay-out zou leiden.

Voorbeelden

Omdat er zoveel verschillende thema’s en thema-ontwikkelaars bestaan, willen we genoeg controle bieden over hoe Oneindig scrollen zich gedraagt als noodzakelijk is om veel thema’s te ondersteunen. Dat gezegd hebbende, heeft onze ervaring met WordPress.com aangetoond dat vrijwel elk thema nauwelijks geconfigureerd hoeft te worden. Om dat te demonstreren, hebben we de configuratie Oneindig scrollen toegepast op de standaard WordPress-thema’s.

Twenty Twelve
/**
 * Thema-ondersteuning voor oneindig scrollen toevoegen.
 *
 * @uses add_theme_support
 * @return void
 */
function twenty_twelve_infinite_scroll_init() {
 add_theme_support( 'infinite-scroll', array(
 'container' => 'content',
 ) );
}
add_action( 'after_setup_theme', 'twenty_twelve_infinite_scroll_init' );

Voor degenen die niet bekend zijn met het thema Twenty Twelve: dit thema maakt gebruikt van sjabloon-onderdelen content-{post format}.php en bevat geen widgetgebied onder berichten, dus hebben we de argumenten footer_widgets en render weggelaten. Eigenlijk kan het argument container ook worden weggelaten, aangezien de waarde overeenkomt met de standaardwaarde, maar we hebben deze laten staan om meer duidelijkheid te bieden.

Twenty Eleven
/**
 * Thema-ondersteuning voor oneindig scrollen toevoegen.
 */
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_eleven_infinite_scroll_init' );

Twenty Eleven bevat voettekst-widgetgebieden, die niet bereikbaar zouden zijn wanneer je naar beneden scrolt, omdat nieuwe berichten worden toegevoegd wanneer je de onderkant bereikt. Om dit probleem op te lossen, gebruiken we een reeks ID’s van die widgetgebieden voor footer_widgets. Als een van die sidebars nu een widget heeft, dan wordt deze gedetecteerd door onze plugin Oneindig scrollen en wordt deze automatisch omgezet naar het type click (waarbij je moet klikken om meer berichten te laden). Hierdoor wordt de content van je voettekst toegankelijk. Als je thema voettekst-widgets heeft, zou je deze aanpak moeten overwegen, aangezien je de gebruikservaring hiermee sterk verbetert.

Twenty Ten
/**
 * Thema-ondersteuning voor oneindig scrollen toevoegen
 */
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' );
/**
 * Stel de code in die moet worden gebruikt voor het oproepen van berichten,
 * waar mogelijk gekoppeld aan sjabloon-onderdelen.
 *
 * Opmerking: moet een loop definiëren.
 *
function twenty_ten_infinite_scroll_render() {
 get_template_part( 'loop' );
}

Twenty Ten gebruikt een sjabloonstructuur die net even wat anders is om berichten weer te geven, dus moeten we een aangepaste weergavefunctie opgeven voor Oneindig scrollen.

Doe het met stijl

Het enige wat nog ontbreekt, is hoe Oneindig scrollen perfect in het ontwerp van je site kan worden geïntegreerd. Oneindig scrollen is afhankelijk van het thema dat body_class ondersteunt en voorziet thema-ontwikkelaars van de optimale flexibiliteit om de ervaring te verbeteren door een aantal specifieke tekstindeling-klassen te gebruiken: wanneer Oneindig scrollen actief is, wordt er een klasse infinite-scroll beschikbaar voor body; als het scrolltype ‘scroll’ is, dan moet er ook een klasse neverending zijn. Zodra het laatste bericht in een blog is geladen, wordt er een klasse infinity-end toegevoegd. Hiermee kun je je normale voettekst en navigatielinks verbergen en ze opnieuw weergeven wanneer Oneindig scrollen is voltooid. Voorbeeld:

/* Verbergt navigatielinks en voettekst op de site wanneer oneindig scrollen actief is */
.infinite-scroll #navigation,
.infinite-scroll.neverending #footer {
 display: none;
}
/* Geeft de voettekst opnieuw weer zodra alle berichten geladen zijn */
.infinity-end.neverending #footer {
 display: block;
}

Er zijn ook twee elementen waarvan je de stijl zult willen aanpassen, zodat deze overeenkomt met je thema:

[...]

en

[…]

span.infinite-loader is de indicator die wordt weergegeven terwijl nieuwe berichten worden geladen. Deze wordt ondergeschikt aan de container ingevoerd en het is mogelijk dat deze indicator wordt verborgen (in plaats van verwijderd uit de DOM) wanneer deze niet meer nodig is. Zorg dat je CSS geschikt is voor beide gevallen.
div#infinite-handle is de knop Meer berichten laden die voor elke type=click wordt weergegeven. Je kunt deze negeren als je thema altijd type=scroll gebruikt en nooit enige voettekst-widgets bevat.

JavaScript-events

Er zijn ongetwijfeld situaties in een thema waarbij het gebruik van JavaScript is vereist nadat berichten zijn toegevoegd. Een voorbeeld hiervan is het gebruik in een thema dat gebruikmaakt van jQuery Masonry en dat die bibliotheek geactiveerd moet worden om de aanvullende berichten te positioneren. Omdat we deze behoefte maar al te goed kennen, activeren we een event nadat berichten zijn toegevoegd. Om dit event te kunnen gebruiken, hoef je alleen de event post-load te controleren wanneer deze document.body probeert te activeren:

( function( $ ) {
 $( document.body ).on( 'post-load', function () {
 // Er zijn nieuwe berichten toegevoegd aan de pagina.
 } );
} )( jQuery );

Aangepaste argumenten aan de query Oneindig scrollen toevoegen

Sommige thema’s en plugins voegen extra argumenten aan berichtqueries toe om de manier te wijzigen waarop berichten worden gesorteerd of geladen. Je kunt het filter infinite_scroll_query_args ook gebruiken om deze extra argumenten toe te voegen aan Oneindig scrollen. In het voorbeeld hieronder voegen we 2 aangepaste sorteerparameters toe, namelijk order en orderby:

/**
 * Alle resultaten van Oneindig scrollen alfabetisch sorteren op berichtnaam
 *
 * @param array $args
 * @filter infinite_scroll_query_args
 * @return array
 */
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' );

Probleemoplossing

Ik heb Oneindig scrollen ingesteld op Meer berichten laden naarmate de lezer verder naar beneden scrolt, maar in plaats daarvan wordt er een knop met ‘Oudere berichten weergegeven’.

Bevat je thema voettekst-widgets? Als er widgets in het voettekst-widgetgebied aanwezig zijn, dan schakelt Oneindig scrollen automatisch over naar de knop ‘Oudere berichten’ om er zeker van te zijn dat de voettekst-widgets op je site kunnen worden weergegeven. Als je wilt dat berichten worden geladen naarmate je naar beneden scrolt, kun je widgets in een alternatief widgetgebied plaatsen, zoals de sidebar. Als je thema alleen voettekst-widgetgebieden bevat, wil je mogelijk liever een ander thema kiezen met meer opties voor widgetgebieden.

Overige opmerkingen

Omdat we weten dat deze functie ondersteund moet worden door thema’s, hebben we de ondersteuning hiervoor opgenomen in Jetpack voor de standaard WordPress-thema’s, Twenty Ten, Twenty Eleven enz. Als je een van deze thema’s gebruikt, kun je Oneindig scrollen inschakelen en gelijk genieten van deze functie. Als je een van de Automattic-thema’s van WordPress.org gebruikt, dan zou deze al ondersteuning voor Oneindig scrollen moeten bieden (in de functiekaart wordt een prompt weergegeven voor gebruikers die thema’s kunnen bijwerken als er een update voor dat thema beschikbaar is).

Privacy-informatie

Deze functie is standaard gedeactiveerd. Als je deze ooit wilt deactiveren, gebruik dan de instelling Meer berichten laden via het standaardgedrag voor thema’s in het gedeelte Thema-verbeteringen in Jetpack — Instellingen — Schrijven.

Meer informatie over het dataverbruik op je site
Gebruikte gegevens
Site-eigenaren/gebruikers
Om paginaweergaven bij te houden via de WordPress.com-statistieken (die in dit geval moet zijn ingeschakeld om het bijhouden van paginaweergaven te laten werken) wanneer er meer wordt geladen, wordt de volgende informatie gebruikt: IP-adres, WordPress.com gebruikers-ID (indien ingelogd), WordPress.com-gebruikersnaam (indien ingelogd), User Agent, bezoekende URL, verwijzende URL, tijdstempel van event, browsertaal, landcode.
Bezoekers aan je site
Om paginaweergaven bij te houden via de WordPress.com-statistieken (die in dit geval moet zijn ingeschakeld om het bijhouden van paginaweergaven te laten werken) wanneer er meer wordt geladen, wordt de volgende informatie gebruikt: IP-adres, WordPress.com gebruikers-ID (indien ingelogd), WordPress.com-gebruikersnaam (indien ingelogd), User Agent, bezoekende URL, verwijzende URL, tijdstempel van event, browsertaal, landcode.
Bijgehouden activiteit
Site-eigenaren/gebruikers
Paginaweergaven worden bijgehouden wanneer er meer wordt geladen (d.w.z. wanneer je naar beneden scrolt en er automatisch een nieuwe reeks berichten wordt geladen). Als de site-eigenaar Google Analytics heeft ingeschakeld om in combinatie met deze functie te werken, wordt er ook een paginaweergave-event naar het bijbehorende Google Analytics-account verzonden wanneer er meer wordt geladen.
Bezoekers aan je site
Paginaweergaven worden bijgehouden wanneer er meer wordt geladen (d.w.z. wanneer je naar beneden scrolt en er automatisch een nieuwe reeks berichten wordt geladen). Als de site-eigenaar Google Analytics heeft ingeschakeld om in combinatie met deze functie te werken, wordt er ook een paginaweergave-event naar het bijbehorende Google Analytics-account verzonden wanneer er meer wordt geladen.
Gegevens gesynchroniseerd (Meer lezen)
Site-eigenaren/gebruikers
We synchroniseren opties die identificeren of de functie is geactiveerd en of Google Analytics is geïntegreerd met deze functie.
Bezoekers aan je site
Geen.
  • Inhoudsopgave

  • Categorieën