16 handige WordPress code snippets

Code snippets zijn stukjes code die kleine aanpassingen maken aan je WordPress installatie. Denk hierbij bijvoorbeeld aan het wijzigen van het logo bij je inlogscherm. De stukjes code kunnen simpelweg worden geplaatst in het funtions.php bestand van je thema (of liever van je child theme) en worden dan meteen toegepast. Indien je de functie niet langer wenst, hoef je alleen de betreffende code uit je functions.php bestand te halen om weer terug te gaan naar hoe het eerst was. Een simpele manier om nog meer uit je WordPress website te halen dus! Indien er wordt gesproken over je wp-config.php bestand, dan moet je naar de root (= map waar WordPress geïnstalleerd staat) van je website gaan en daar de aanpassingen doen.

Over het algemeen werken de stukjes code door ze gewoon te kopieren naar je eigen functions.php bestand. In sommige gevallen, bijvoorbeeld bij thema’s die van zichzelf al heel erg aangepast zijn of gebruik maken van een framework, kan het voorkomen dat de stukjes code niet correct werken. In dat geval is het mogelijk om contact op te nemen voor meer informatie, of onder dit bericht een reactie achter te laten.

1. Prullenbak eerder leegmaken of uitschakelen

Ter beveiliging houdt WordPress verwijderde berichten en pagina’s in een “prullenbak”. Om dingen dus daadwerkelijk te verwijderen, zal je ze in de prullenbak nog een keer, definitief, moeten verwijderen. De prullenbak in WordPress werkt daarmee op dezelfde manier als die op bijvoorbeeld Windows.

Na 30 dagen worden de berichten in je prullenbak automatisch door WordPress verwijderd, maar deze tijd kan je ook zelf aanpassen naar bijvoorbeeld één week. Hiervoor moet je de volgende code aan je wp-config.php bestand toevoegen:

define (‘EMPTY_TRASH_DAYS’, 7);

Hierin is ‘7’ de hoeveelheid dagen dat de onderdelen in de prullenbak bewaart blijven en dit kun je dus aanpassen naar je eigen inzicht.

Om de prullenbak uit te schakelen, zodat verwijderde bestanden meteen definitief verwijderd worden, kun je het aantal dagen op ‘0’ zetten. De code wordt in dat geval als volgt:

define (‘EMPTY_TRASH_DAYS’, 0);

Let er hierbij wel op dat het niet meer mogelijk is om verwijderde berichten terug te halen, want deze staan niet langer meer in de prullenbak. Doe dit dus alleen als je er zeker van bent dat er nooit berichten per ongeluk verwijderd zullen worden.

2. WordPress logo loginpagina aanpassen

Zoals in dit artikel is beschreven, is het mogelijk om het logo van je WordPress login pagina aan te passen. Om dit te doen zonder gebruik van plugins, kan je het volgende stuk code in je functions.php bestand plaatsen:

add_action("login_head", "my_login_head");
function my_login_head() {
   echo "
   <style>
   body.login #login h1 a {
      background: url('pad/naar/afbeelding.png’) no-repeat scroll center top transparent;
      height: XXpx;
      width: XXpx;
   }
   </style>
   ";
}

In dit stukje code moet je het “pad/naar/afbeelding/png” vervangen met het pad naar je afbeelding en de “XX” bij “height” en “width” moet je vervangen door de daadwerkelijke afmetingen van de afbeelding.

Het idee achter de code is dat tijdens het laden van de login pagina, de huidige CSS wordt overschreden met degene die je hier definieert in de code. Zo wordt er dus een nieuwe achtergrond afbeelding ingesteld met bijbehorende hoogte en breedte.

3. Aantal bericht revisies aanpassen

Je WordPress website slaat revisies van je berichten en pagina’s op, zodat je terug kunt naar een goede versie voor het geval iets fout gaat. Voor mensen die veel bloggen en vaak aanpassingen maken aan hun berichten is dit een handige functie, maar andere maken hier nauwelijks tot geen gebruik van.

Het grote nadeel van alle revisies is dat ze erg veel (onnodige) ruimte op je database innemen. Stel dat je bijvoorbeeld een statische homepagina hebt en hier om de zoveel tijd de tekst van veranderd. Elke keer dat je de pagina opslaat, wordt hier een revisie van bijgehouden, want WordPress heeft standaard geen maximum nummer van revisies. Dit betekent dat als je deze pagina 100 keer hebt veranderd, er ook 100 revisies worden opgeslagen in je database.

Gelukkig is het mogelijk om zelf een limiet van revisies in te stellen door een simpel stukje code in je wp-config.php bestand te plaatsen:

define ('WP_POST_REVISIONS', 5);

In dit voorbeeld is er gekozen om een maximum van 5 revisies per bericht te hebben. Dit nummer kan je aanpassen aan je eigen wensen. Indien je liever helemaal geen revisies hebt, kan je het ook uitschakelen. Om dat te doen, dien je de volgende code te gebruiken:

define ('WP_POST_REVISIONS', false);

4.Autosave tijd van berichten en pagina’s aanpassen

WordPress slaat automatisch elke 60 seconden de pagina, of het bericht, waar je aan werkt op. Dit is voor het geval dat bijvoorbeeld de verbinding wegvalt en je nog niet alles had opgeslagen, in zo’n geval ben je maximaal 60 seconden typewerk kwijt door de automatische opslag functie. Voor wie de 60 seconden te weinig is, of juist te veel, is het mogelijk om dit interval naar wensen aan te passen. Hiervoor moet je de volgende code in je wp-config.php bestand plaatsen:

define ('AUTOSAVE_INTERVAL', 120);

In dit voorbeeld is het interval veranderd in 2 minuten (120 seconden), maar dit kun je ook naar bijvoorbeeld 30 seconden of juist 5 minuten zetten.

5. Locatie en naam van je wp-content map aanpassen

De wp-content map bevat veel data van je website, waaronder thema’s, plugins en uploads. Hierdoor wordt de wp-content map ook vaak het doelwit van hackers, voornamelijk degene die proberen om malware op je website te krijgen. Om het moeilijker voor ze te maken om je wp-content map te vinden, kun je ervoor kiezen om hem te verplaatsen of te hernoemen (of beiden).

Let er bij het wijzigingen van je wp-content map wel op dat (helaas) niet iedere plugin hiermee overweg kan. Voornamelijk het hernoemen van de map kan voor problemen zorgen. Mocht het dus zijn dat onderdelen niet goed meer werken na het wijzigen van de map, probeer deze dan eerst weer terug te zetten naar de originele locatie, of kies ervoor om die bepaalde plugin(s) niet meer te gebruiken als je liever voor veiligheid gaat.

Voor als je simpelweg de locatie van de wp-content map wilt wijzigingen, kun je de volgende code in je wp-config.php bestand plaatsen:

define ('WP_CONTENT_DIR', dirname(__FILE__) . '/newlocation/wp-content');

Of, als je het liever hebt, kun je ook het volledige pad naar de map opgeven:

define ('WP_CONTENT_DIR', 'http://www.jewebsite.nl/nieuwe/locatie/wp-content');

Het hernoemen van de wp-content map kan met de volgende code:

define ('WP_CONTENT_FOLDERNAME', 'nieuweNaam');

6. Redirect je auteur archief link naar een andere pagina

De auteur die bovenaan geschreven berichten staat, linkt standaard naar een lijst van berichten die door hem/haar geschreven zijn. Indien je maar één auteur op je website hebt, staat dezelfde informatie in je categorieën en archieven. Om die reden kun je er ook voor kiezen om bezoekers door te verwijzen naar een bepaalde pagina, bijvoorbeeld je “About” pagina.

Om dit voor elkaar te krijgen, moet je het volgende stuk code aan je functions.php bestand toevoegen:

add_filter('author_link', 'my_author_link');
function my_author_link(){
    return home_url( 'about' );
}

Hierin is ‘about’ je standaard www.jesite.nl/about pagina. Je kunt er echter ook voor kiezen om bezoekers naar een andere pagina door te verwijzen.

7. Verwijs bezoekers door naar het bericht als het zoeken maar één resultaat oplevert

Als een bezoeker iets op je WordPress website zoekt, wordt er een lijst van pagina’s en berichten getoond die aan de zoekcriteria voldoen. Vervolgens kan de bezoeker dan op het gewenste artikel klikken om het te lezen.

In het geval van maar één zoekresultaat, zou je ervoor kunnen kiezen om een bezoeker meteen door te verwijzen naar het artikel met daarop het resultaat. Hiervoor moet je het volgende stuk code in je functions.php bestand zetten:

add_action('template_redirect', 'redirect_single_post');
function redirect_single_post() {
   if (is_search()){
      global $wp_query;
      if($wp_query->post_count == 1 && $wp_query->max_num_pages == 1){
         wp_redirect( get_permalink($wp_query->posts['0']->ID) );
      }
   }
}

8. Pagina’s uitsluiten van je WordPress zoekresultaten

Als je WordPress gebruikt om te bloggen, bevat je website waarschijnlijk veel berichten en maar een paar pagina’s (bijvoorbeeld een contact- en about-pagina). Meestal staan de pagina dan ook nog eens duidelijk vermeld op je website in een menu, dus zijn ze vaak niet relevant als mensen iets op je website zoeken. Om die reden kan je er voor kiezen om je pagina’s niet weer te geven in je zoekresultaten.

Met behulp van het volgende stukje code, dat je in je functions.php bestand moet plaatsen, kun je ervoor zorgen dat alleen berichten (posts) worden weergegeven in de zoekresultaten.

function filter_search($query){
   if($query->is_search){
      $query->set('post_type', 'post');
}
   return $query;
}

add_filter('pre_get_posts', 'filter_search');

9. Verwijder het website veld van je WordPress reactieformulier

Bij WordPress is het mogelijk om je website in te vullen als je een reactie achterlaat. Dit is een optioneel veld en voor de meeste bezoekers ook niet relevant. Het weglaten van dit veld zorgt ervoor dat alleen relevante informatie van bezoekers wordt gevraagd, en het zorgt er ook voor dat er minder handmatige spam op je website terecht komt (denk aan korte reacties om een website te promoten).

Om dit voor elkaar te krijgen, hoef je alleen dit stukje code in je functions.php bestand te plaatsen:

function remove_comment_fields($fields){
   unset($fields['url']);
   return $fields;
}

add_filter('comment_form_default_fields', 'remove_comment_fields');

10. Verplicht een minimum aantal karakters voor het plaatsen van een reactie

Wat je vaak ziet op websites zijn korte, nutteloze, reacties. Hiermee doel ik op reacties zoals “Bedankt” en “Leuk bericht”. Ze zijn leuk om te krijgen, want je weet dat je bezoekers je werk waarderen, maar ze voegen niks toe aan de discussie. Het staat beter op je website als je inhoudelijk kunt reageren op de reacties van je bezoekers.

Om de korte reacties tegen te gaan, kun je een minimale lengte instellen. Een reactie die niet aan de ingestelde minimale hoeveelheid karakters voldoet, krijgt hiervan een melding en de reactie wordt niet geplaats. Het enige wat je hiervoor hoeft te doen is de volgende code in je functions.php bestand te plaatsen:

add_filter('preprocess_comment', 'minimal_comment_length');

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

In bovenstaande code is voor de minimale lengte 25 karakters gekozen. Je kunt dit naar eigen wensen instellen door bij $minLength de 25 te veranderen in een hoeveelheid naar keuze.

11. Standaard widgets verbergen

Wanneer je onder “Weergave > Widgets” kijkt, zie je daar een hele lijst met widgets staan. Dit is erg onoverzichtelijk, vooral als je extra widgets hebt door bijvoorbeeld thema’s en plugins. Daarom is het handig om de ongebruikte widgets te verbergen. Onderstaand stuk code moet je plaatsen in je functions.php bestand en verbergt dan alle standaard WordPress widgets. Verwijder hieruit dus de regels van de widgets die je wel zichtbaar wilt houden. Let er wel op dat dit stukje code de widgets enkel verbergt; haal je de code weg dan zijn de widgets gewoon weer terug.

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');
   unregister_widget('Twenty_Eleven_Ephemera_Widget');
}

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

12. Eigen notificatie in admin dashboard

Wanneer je met meerdere mensen aan een website werkt, is het wel eens handig om ze te kunnen informeren over bepaalde dingen. Met deze code is het mogelijk om een notificatie te geven aan elke gebruiker die inlogt op je website. De notificatie zal bovenin te zien zijn en je kunt er weergeven wat je wilt. De code is als volgt en dient geplaats te worden in je functions.php bestand:

function showMessage($message, $errormsg = false){
   if ($errormsg) {
      echo '<div id="message" class="error">';
   }
   else {
      echo '<div id="message" class="updated fade">';
   }
   echo "<p><strong>$message</strong></p></div>";
}

function showAdminMessages() {
   showMessage("Je bericht hier.", true);
}

add_action('admin_notices', 'showAdminMessages');

Bij “Je bericht hier” kun je je bericht ingeven wat je wilt weergeven. Zorg er wel voor dat je bericht altijd tussen accolades (“”) staat. Achter “Je bericht hier” zie je de notatie true staan. Dit zorgt ervoor dat de melding een rode rand krijgt en als een “error” idee overkomt. Wanneer je hier false invult, is de melding groen en zou je het bijvoorbeeld kunnen gebruiken om normale meldingen mee te doen.

13. Verwijs bezoekers door na het achterlaten van een reactie

Wanneer een bezoeker een reactie heeft geplaats, wordt standaard de pagina herladen en gebeurt er verder niks. Je kunt er ook voor kiezen om een aparte pagina aan te maken waarop je de bezoeker bedankt voor het plaatsen van zijn bericht of hem wijst op andere pagina’s / berichten op je website waar je extra nadruk op wilt leggen. Vervolgens kun je de bezoeker doorverwijzen naar deze pagina met behulp van dit stukje code in je functions.php bestand:

add_filter('comment_post_redirect', 'redirect_after_comment');
function redirect_after_comment(){
   wp_redirect('http://www.jesite.nl/je-redirect-pagina/');
   exit();
}

Hierbij moet je na wp_redirect de volledige url opgeven naar de pagina waar je de bezoeker wenst door te verwijzen.

14. Thumbnails in je RSS feed

In je RSS feed worden de berichten van je website weergegeven voor onder andere newsreaders. Sommige berichten op je website kunnen echter over een thumbnail beschikken (je uitgelichte afbeelding), en die zal hierin niet worden weergegeven. Om dit toch voor elkaar te krijgen, kun je de volgende code in je functions.php bestand zetten:

function diw_post_thumbnail_feeds($content) {
   global $post;
   if(has_post_thumbnail($post->ID)) {
       $content = '<div>' . get_the_post_thumbnail($post->ID) . '</div>' . $content;
   }
   return $content;
}

add_filter('the_excerpt_rss', 'diw_post_thumbnail_feeds');
add_filter('the_content_feed', 'diw_post_thumbnail_feeds');

Vervolgens zullen voortaan de thumbnails bij je berichten ook weergegeven worden in de RSS feed.

15. “Lees meer” na excerpt

Hoewel de meeste thema’s al standaard een “Lees meer” link weergeven bij excerpts van berichten, zijn er een paar die dat niet doen. In zo’n geval is het zonde om hier een plugin voor te downloaden als het ook met een simpel stukje code in je functions.php bestand kan:

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

add_filter('excerpt_more', 'excerpt_readmore');

16. Automatisch Twitter usernames in berichten linken

Voor de mensen die vaak verwijzingen maken naar mensen op Twitter, en daarbij de notatie @username gebruiken, is er een mogelijkheid om hier automatisch links van te genereren. Het volgende stukje code zoekt in je berichten en reacties naar stukken tekst zoals @WPsitemaken en verandert deze automatisch in een link naar het betreffende twitteraccount. Het enige wat je hiervoor hoeft te doen is het volgende stukje code te kopiëren naar je functions.php bestand:

function content_twitter_mention($content) {
   return preg_replace('/([^a-zA-Z0-9-_&])@([0-9a-zA-Z_]+)/', "$1<a href=\"http://twitter.com/$2\" target=\"_blank\" rel=\"nofollow\">@$2</a>", $content);
}

add_filter('the_content', 'content_twitter_mention');
add_filter('comment_text', 'content_twitter_mention');

Dit waren de handige code snippets voor het moment. Indien je aanvullingen of opmerkingen hebt op deze lijst, dan kan je dit doorgeven via het contactformulier of als reactie onder dit artikel.

Michel Kraaijeveld is oprichter van WPsitemaken. Hij is ervan overtuigd dat het voor iedereen mogelijk moet zijn om een eigen website te maken, zonder lastige handleidingen door te hoeven nemen. Zelf is hij al 6 jaar actief met WordPress en probeert zijn kennis op een simpele manier over te brengen aan anderen.

Laat een reactie achter