WordPress Code Snippets

WordPress Functions

We weten ondertussen wel dat WordPress een vrij basis CMS omgeving is. Iedere website gemaakt in WordPress wordt dan ook uitgebreid, in eerste instantie door een bepaald thema te kiezen en te installeren. Afhankelijk van dat thema verschijnen er dan extra opties in het Dashboard.

Ben je eenmaal op weg met een thema, loop je bijna altijd ergens tegenaan, je mist een bepaalde functionaliteit of wilt graag een functie aanpassen; bijvoorbeeld de standaard lengte van de samenvatting, bepaalde widgets uitschakelen, etc.

Veel extra functionaliteit is toe te voegen via plugins, maar hoe meer plugins je installeert des te trager zal het laden van je pagina’s worden en bepaalde functionaliteit kunnen we eenvoudig toevoegen door gebruikt te maken van zgn. “Code Snippets”.

Code Snippets

Code Snippets zijn kleine stukjes code (meestal PHP in combinatie met HTML) welke de functionaliteit van WordPress uitbreiden of kunnen inperken. De standaard lengte van de samenvatting (lees ook: Samenvatting gebruiken) is meestal ingesteld op 55 woorden. Wil je die langer of juist korter maken dan kan dat door een stukje code op te nemen in het functions.php bestand van je thema.

Zo kun je door middel van de juiste code (snippet) aan het functions.php bestand toe te voegen of juist stukjes code aan te passen het gebruikte thema aanpassen naar eigen wens.

Veel van die code snippets zijn te vinden op WordPress.org

Functions.php

In de map van het door jouw gebruikte thema bevindt zich een bestand met de naam “functions.php”. Deze map vindt je onder “wp-content/theme/jouwthema“. Het is niet aan te raden om dat bestand aan te passen. Die wordt namelijk overschreven bij een thema-update.

In de map “wp-includes” bevindt zich ook een functions.php bestand en daar moet je nooit aankomen, daar alle WordPress functies daarin opgenomen zijn.

Het beste is, indien je thema geen zgn. “Child Theme” meegeleverd (of geïnstalleerd) heeft zo’n child theme eerst aan te maken. Hoe je dat doet, lees je in ons artikel “Child Theme aanmaken“. Alle aanpassingen in de bestanden van een child theme worden namelijk niet overschreven bij een update van het thema.

Het functions.php bestand van je child theme moet je dan eerst downloaden via bijvoorbeeld FileZilla, dan bewerken en weer uploaden naar de map van je child theme. Je kunt het ook aanpassen via het Dashboard onder “Weergave -> Editor”:

WordPress Functions.php

Functions.php aanpassen

PHP Code Plakken

Nu zijn er op zowel WordPress.org als via andere bronnen op internet veel van die code snippets te vinden. Vaak wordt er dan bij vermeld om die code dan onderaan je functions.php toe te voegen. De ontwikkelaar van dat stukje code gaat er dan vanuit dat je weet wat je doet en zou je dan de code letterlijk aan het einde van je functions.php toevoegen dan kan het wel eens fout gaan.

Ieder php- bestand of functie moet namelijke een opening en sluiting -tag omvatten. Die zien er zo uit:

// PHP Opening Tag
<?php

?>
// PHP Sluiting Tag

Code of tekst voorafgaand aan “//” is doorgaans informatief commentaar in de code.

Zou je nu de code snippet die je ergens gevonden hebt aan het einde van het bestand toevoegen staat de snippet buiten de PHP-sluiting-tag en wordt de code genegeerd en niet uitgevoerd. Het op de verkeerde plaats plakken van een stukje code kan zelf resulteren in het helemaal niet meer functioneren van je website en dat je ook niet meer in je Dashboard kan komen. De enige oplossing is dan om het oorspronkelijke functions.php bestand weer terug te zetten.

Voorafgaand aan het toevoegen of wijzigen van dat bestand is een kopie maken altijd aan te raden.

De juiste plaats om een code snippet te plakken is voor de einde php-tag “?>”.

Dus stel, je hebt de volgende code gevonden om de tekst “Lees verder” bij bericht samenvattingen te plaatsen en wilt die code plaatsen in je functions.php bestand:

function excerpt_readmore($more) {
   return '... <a href="'. get_permalink($post->ID) . '" >' . 'Lees verder' . '</a>';
}

add_filter('excerpt_more', 'excerpt_readmore');

Dan dien je die dus te plakken voor de php einde tag:

// PHP Opening Tag
<?php

function excerpt_readmore($more) {
   return '... <a href="'. get_permalink($post->ID) . '" >' . 'Lees meer' . '</a>';
}

add_filter('excerpt_more', 'excerpt_readmore');

?>
// PHP Sluiting Tag

In dit voorbeeld is de functie zonder php opening en sluiting -tag gekopieerd en geplakt. Nu kan het zijn dat de ontwikkelaar de functie toont met die php-tags. Het beste is dan om die tags niet mee te kopiëren. Je zou dan namelijk de fout kunnen maken om een stukje php-code binnen een bestaande php-code te plaatsten (nesten) en dan gaat het ook fout.

Voorbeeld:

// PHP Opening Tag
<?php

<?php
function excerpt_readmore($more) {
   return '... <a href="'. get_permalink($post->ID) . '" >' . 'Lees meer' . '</a>';
}

add_filter('excerpt_more', 'excerpt_readmore');

?>
?>
// PHP Sluiting Tag

Functies kopiëren

Net als bij aangeven van het starten van php en het eindigen daarvan begint ook iedere functie met een opening-tag en wordt die ook weer afgesloten met een sluiting-tag:

function functie_naam { // Functie Opening Tag

// Functie specifieke code

} // Functie Sluiting Tag

Dus iedere functie of code snippet start met “function”, dan de naam en dan de opening-tag “{“.

Daarna volgt de functie specifieke code en dan de sluiting-tag “}”.

Bij het kopiëren van van een code snippet is het dus belangrijk om te beginnen met “function” en te eindigen bij “{“.

Nu kan het zijn dat er nog functie-specifieke filters (als in het voorbeeld “Lees verder” hiervoor) mee moeten worden gekopieerd en dat wordt dan meestal aangegeven bij de code snippet, die moet je dan ook mee kopiëren en plakken. Die filters worden aangeven met de code “add_filter” en eindigen altijd met een “;”.

Code Snippets Plugin

Wil je nu niet gebruik maken van een child theme of helemaal onafhankelijk zijn van het gebruikte thema dan kun je gebruik maken van de plugin “Code Snippets”. Met die plugin is het namelijk mogelijk om code snippets te gebruiken zonder dat je het functions.php bestand dient aan te passen.

Het voordeel daarvan is dat als je een ander thema gaat gebruiken de je extra code snippets die je normaal in het functions.php bestand hebt toegevoegd niet nog eens dient te kopiëren naar het functions.php bestand van je nieuwe thema.

Installeren

WordPress Code Snippets

Code Snippets Plugin Installeren


(bekijk ons artikel: Plugins Installeren, voor de diverse manieren om een plugin te installeren)

De plugin heeft een aantal basis instellingen welke te vinden zijn in het Dashboard onder “Snippets -> Settings”.

Snippet Toevoegen

Een code snippet is nu aan te maken via de optie “Add New”:

WordPress Code Snippet Plugin

Code Snippet toevoegen

Een bijkomend voordeel is dat je hier tevens een beschrijving kunt toevoegen en eventueel extra informatie zonder dat je dat als code-commentaar dient op te nemen. Verder heb je nog de mogelijkheid om in te stellen waar de code snippet actief dient te zijn (overal, Dashboard of alleen op de live website).

Code Snippets Voorbeelden

Hieronder volgen een aantal voorbeelden van code snippets die je kunt gebruiken zonder dat je daar extra plugins voor nodig hebt.

Let op: Het kan zijn dat het door jou gebruikte thema al behoorlijk is uitgebreid en gebruik maakt van een framework en dat daardoor het stukje code niet juist werkt. In dat geval laat het ons dan weten en we zullen dan bekijken hoe we je van dienst kunnen zijn.

Admin Gebruiker Toevoegen

Nu kan het voorkomen dat je geen toegang meer hebt tot je admin account, doordat je bijvoorbeeld het wachtwoord niet meer weet. Je kunt dan een nieuwe admin gebruiker toevoegen met behulp van de volgende code. Hiervoor dien je het functions.php bestand van je thema te downloaden, de code toe te voegen en daarna het bestand weer terug kopiëren.

function nieuwe_admin_account(){
 $user = 'gebruikersnaam';

$pass = 'wachtwoord';
 $email = 'emailadres';

if ( !username_exists( $user )  && !email_exists( $email ) ) {
 $user_id = wp_create_user( $user, $pass, $email );

$user = new WP_User( $user_id );
 $user->set_role( 'administrator' );

} }
 add_action('init','nieuwe_admin_account');

Pas de waardes gebruikersnaam, wachtwoord en emailadres aan met de nieuwe gegevens van de aan te maken admin-account en je kunt weer inloggen op je WordPress Dashboard met de nieuwe gegevens.

Samenvatting Lengte Aanpassen

Standaard staat (meestal) de lengte van de bericht-samenvatting die door het thema getoond wordt op 55 woorden. Wil je die bijvoorbeeld verhogen naar 100 woorden dan kan dat door de volgende snippet aan je functions.php toe te voegen:

function new_excerpt_length($length) {
 return 100;

}
add_filter('excerpt_length', 'new_excerpt_length');

Reactie Lengte Controleren

Mogen je bezoekers reageren op bijvoorbeeld berichten die je plaatst dan zou je de minimale reactie lengte in kunnen stellen om korte niet-zinvolle reacties tegen te gaan.

Hiervoor gebruik je dan de volgende code:

function minimale_reactie_lengte($commentdata){
   $minLength = 150;
   if( strlen( trim($commentdata['comment_content']) ) < $minLength ){
      wp_die( 'Je reactie moet minimaal ' . $minLength . ' karakters lang zijn.');
   }
   return $commentdata;
}

add_filter('preprocess_comment', 'minimale_reactie_lengte');

Pas de waarde “150” aan voor het minimaal aantal karakters wat een bezoeker als reactie zou moeten invoeren en pas eventueel de tekst “Je reactie moet minimaal” en ” karakters lang zijn.” aan. Let op dat je hier de ‘ voor en achter de tekst die je wilt tonen niet vergeet.

Redirect na plaatsen van een reactie

Heeft iemand een reactie geplaatst wordt dezelfde pagina weer getoond met eventueel een melding dat de reactie wacht op moderatie of met de reactie zelf. Nu zou het leuk zijn om de bezoeker die een reactie heeft geplaatst automatisch (redirecten) door te verwijzen naar een pagina met bijvoorbeeld een “bedankje” en eventueel andere voor de bezoeker interessante informatie.

Dit is mogelijk met behulp van de volgende code:

function redirect_na_reactie(){
   wp_redirect('https://www.jouwwebsite.nl/de-redirect-pagina/');
   exit();
}
add_filter('comment_post_redirect', 'redirect_na_reactie');

Pas hier alleen de link aan naar de pagina op jouw website waarnaar je de bezoeker wilt redirecten.

Widgets Verbergen

In de praktijk komt het simpelweg voor dat je niet van alle standaard widgets gebruik maakt die WordPress geïnstalleerd heeft. Maak je bijvoorbeeld gebruik van de Blackstudio TinyMCE Widget, dan zul je waarschijnlijk nooit meer gebruik maken van de standaard tekst-widget van WordPress. Die zou je dan uit kunnen schakelen en zo het overzichtelijker maken.

Met behulp van de volgende code kun je alle standaard Widgets uitschakelen:

function unregister_default_widgets() {
   unregister_widget('WP_Widget_Pages');
   unregister_widget('WP_Widget_Calendar');
   unregister_widget('WP_Widget_Archives');
   unregister_widget('WP_Widget_Links');
   unregister_widget('WP_Widget_Meta');
   unregister_widget('WP_Widget_Search');
   unregister_widget('WP_Widget_Text');
   unregister_widget('WP_Widget_Categories');
   unregister_widget('WP_Widget_Recent_Posts');
   unregister_widget('WP_Widget_Recent_Comments');
   unregister_widget('WP_Widget_RSS');
   unregister_widget('WP_Widget_Tag_Cloud');
   unregister_widget('WP_Nav_Menu_Widget');
}

add_action('widgets_init', 'unregister_default_widgets', 11);

Verwijder eenvoudig de regel met de Widget die je nog actief wilt zien. Na het toevoegen van deze code zijn de gekozen Widgets niet meer zichtbaar, ze bestaan nog wel. Het verwijderen van één of meer van voorgaande regels zal een Widget weer tonen.

Vragen & Info

Heb je vragen naar aanleiding van dit artikel, stuur ons dan een mail op: info@qwain.nl of geef een reactie via onderstaand reactie-formulier.

Op de hoogte blijven van alle WordPress Nieuwtjes, Tips & Tricks… volg ons dan op Facebook .

 

Overige Artikelen


Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *