Birthdays widget plugin i.c.m. WordStar thema werkt niet meer

WordPress Birthdays widget plugin zorgt voor PHP conflict met WordStar themaProbleem:
Voor en sportvereniging heb ik vier jaar geleden een WordPress website ontwikkeld. Onlangs had ik de website weer eens bezocht en viel het me op dat de verjaardagen van de leden niet meer getoond werden in de sidebar.

Om de verjaardagen te tonen heb ik in het verleden de WordPress Birthdays widget plugin geïnstalleerd. Helaas wordt de plugin al 3 jaar niet meer onderhouden dus de kans dat er problemen ontstaan is aanwezig.

De website heeft het WordStar thema geïnstalleerd.

Alle widgets na de verjaardagen widget worden ook niet meer getoond en de footer oogt heel lelijk. Blijkbaar veroorzaakt de plugin nogal wat problemen want als je hem uitschakelt functioneert de website weer perfect.

Oplossing:
Tijdens het laden van de widget wordt de onderstaande foutmelding veroorzaakt:

PHP Fatal error:  Uncaught ArgumentCountError: Too few arguments to function {closure}(), 1 passed in << pad naar website >>\wp-includes\class-wp-hook.php on line 286 and exactly 3 expected in << pad naar website >>\wp-content\themes\wordstar\inc\filters.php:181
Stack trace:
#0 << pad naar website >>\wp-includes\class-wp-hook.php(286): {closure}('Verjaardagen')
#1 << pad naar website >>\wp-includes\plugin.php(208): WP_Hook->apply_filters('Verjaardagen', Array)
#2 << pad naar website >>\wp-content\plugins\birthdays-widget\class-birthdays-widget.php(47): apply_filters('widget_title', 'Verjaardagen')
#3 << pad naar website >>\wp-includes\class-wp-widget.php(378): Birthdays_Widget->widget(Array, Array)
#4 << pad naar website >>\wp-includes\widgets.php(770): WP_Widget->display_callback(Array, Array)
#5 << pad naar website >>\wp-content\themes\wordstar\sidebar.php(15): dynamic_sidebar('wordstar-sideba...')
#6 << pad naar website >>\wp-includes\template.php(722): require_once('<< pad naar website >>...')
#7 << pad naar website >>\wp-inclu in << pad naar website >>\wp-content\themes\wordstar\inc\filters.php on line 181

Het probleem zit hem in het bestand “birthdays-widget/class-birthdays-widget.php” op regel 36 en 53. Daar vind je de volgende regel PHP code:

$title = apply_filters( 'widget_title', $instance[ 'title' ]);

Wat moet zijn:

$title = apply_filters( 'widget_title', $instance[ 'title' ], $instance, $instance['id'] )

WordPress verwacht 3 variabelen die verplicht zijn zoals aangegeven in de documentatie.

Pas de code aan op beiden regels. Upload het bestand en schakel de Birthdays widget plugin weer in. Je zal zien dat deze nu weer correct functioneert.

Aanpassen van thema of plugin code is natuurlijk iets wat je nooit moet doen. Toekomstige updates overschrijven jouw wijzigingen. Maar in het geval van deze plugin is de kans klein dat er ooit nog een nieuwe versie uitkomt.

Oplossing getest op:
WordPress 5.2.0, WordStar 4.3, Birthdays Widget plugin 1.7.18

Laat een reactie achter

Your email address will not be published. Required fields are marked *

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.