Plaats van deelbuttons van WordPress aanpassen

Op mijn blog gebruik ik de deelbuttons van Jetpack van Automattic. Met deze buttons kunnen berichten gedeeld worden via Twitter, Google+. e-mail, Facebook, LinkedIn, Reddit, Tumblr en Pinterest. Om de functionaliteiten van wordpress.com op een eigen gehost blog te kunnen gebruiken is er Jetpack.

Jetpack van Automattic

Automattic is de ontwikkelaar van WordPress. Jetpack bevat verschillende toevoegingen voor een zelfgehost blog. De deelbuttons zijn er onderdeel van. Onlangs heb ik de related posts-plugin van Zemanta toegevoegd en ineens verschenen de deelbuttons van Jetpack niet meer onderaan de blogs. Om mijn blog er wel uit te laten zien, zoals het was bedoeld was er een aanpassing nodig. Dit is met een simpel programmeerwerk aan te passen.

De deelbuttons

Zorg er natuurlijk eerst voor dat de deelbuttons van Jetpack worden gebruikt. Dit kan op een blog waarvoor je zelf de hosting hebt geregeld. De gratis wordpress.com-domeinen zijn op dit punt niet aan te passen. In de code van de plugin staat in twee filters dat de positie van de deelbuttons niet aangepast kan worden. Om precies te zijn, dit staat in sharing-service.php. Om deze filters te overschrijven in een specifieke loop (spreek uit: loep) moeten deze filters worden verwijderd. Naar de deelbuttons worden ook regelmatig met Sharedaddy of Sharedaddy’s sharing verwezen.

Deelbuttons van Jetpack, Automattic op WordPress
De deelbuttons van Jetpack, Automattic op WordPress zoals onderaan deze blog staan. Let op, hierboven kan je niet klikken om te delen. Dit is een plaatje van de buttons.

The loop

Als het nu al begint te duizelen, laat me eerst uitleggen wat the loop is.
The loop is PHP code die WordPress gebruik om berichten weer te geven. Met the loop wordt ieder bericht in een vast formaat weergegeven. Alle HTML en PHP-voorwaarden worden zo voor elk bericht doorgevoerd. De loop heeft bijvoorbeeld informatie over het weer geven van de titel, tijd en categorie. (respectievelijk the_title(), the_ time() en the_category())
Als er ergens wordt gezegd dat bepaalde code binnen the loop moet worden gezet dan weet je dat je in het repeterende gedeelte van de php-code moet zijn.

Hier begint the loop

Het begin van the loop is te herkennen aan onderstaand gedeelte van de code.

<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

En hier eindigt the loop

De code hieronder geeft aan waar the loop eindigt.

<?php endwhile; else: ?>
<p><?php _e(‘Sorry, no posts matched your criteria.’); ?></p>
<?php endif; ?>

De melding voor het einde van the loop kan ook nog zonder voorwaarden worden weergegeven. Dan staat er alleen:

<?php endwhile; ?>

Filters verwijderen

Om de deelbuttons van Jetpack van Automattic te verplaatsen op een eigen gehoste website of blog waarbij je gebruikt maakt van WordPress moet de code worden aangepast. De code zorgt ervoor dat twee filters uit de plugin van Jetpack worden verwijderd. De plugin blijft intact, maar in the loop wordt aan de plugin verteld dat de twee filters niet mee mogen doen. Deze code moet in the loop worden geplaatst. In de volgende paragraaf staat de toe te voegen code vermeld.

Toe te voegen code

De code die moet worden toegevoegd staat hieronder. Het zorgt ervoor dat twee filters worden verwijderd die standaard in de plugin staan.

<?php remove_filter( ‘the_content’, ‘sharing_display’, 19 ); ?>
<?php remove_filter( ‘the_excerpt’, ‘sharing_display’, 19 ); ?>

Het is belangrijk dat deze code in the loop wordt gezet. Als je die code erin hebt gezet wordt ervoor gezorgd dat het plaatsen van de deelbuttons wordt uitgeschakeld. De volgende stap is dan het plaatsen van een stuk code waar je de deelbuttons weer terugzet.
Dus eerst verwijder je de code en dan zet je het weer terug? Klopt. Je verwijdert de code en daarmee ook de vaste plek van de code. Om de deelbuttons wel te laten zien is er nog een stuk code nodig.

De code voor het plaatsen van de deelbuttons

De filters uit de plugin zijn nu verwijderd. Het is nu van belang de deelbuttons terug te plaatsen op de plek waar jij het wil. Deze code kan je op elke plek neerzetten, dus boven de content, onder de content, na de author-informatie. Waar je maar wil, er is een voorwaarde. De code moet in the loop staan. Zet daarom onderstaande code op de gewenste plek in the loop.

<?php echo sharing_display(); ?>

Code verwijderen in the loop

Er kan worden gekozen om de twee filters niet te verwijderen in the loop maar het betreffende bestand in de plugin aan te passen. Het is dan echter de vraag of de updates van Jetpack door Automattic wel of niet de verwijderde code weer toevoegen. Het lijkt me dat bij elke update de code wordt teruggezet in de plugin. Het is daarom handiger om de code in the loop toe te voegen. De pluginupdates worden dus overleefd door de filters in the loop te verwijderen. Ik raad wel aan dit na elke update te controleren.

De code verwijderen

Als de Jetpack deelbuttons van Automattic, Sharedaddy, worden verwijderd dan is de code niet meer nodig. Misschien is er een betere of andere deelmogelijkheid van een andere ontwikkelaar. De filters die dan met bovenstaande code zijn verwijderd kunnen dan weer worden weggehaald uit de code.  Natuurlijk moet dan ook de code voor het plaatsen van de deelbuttons weer worden weggehaald.

Deel je kennis

Onder het mom van Deel je kennis is deze blog geschreven. Als we ergens niet uitkomen is vaak het eerste wat we doen een zoekopdracht intikken op Google. En dit heeft alleen maar zin als er ook geschreven wordt over mogelijke oplossingen. Ik draag daar graag aan bij.

Leave a Reply

Skip to content
%d bloggers like this: