Categorieën
WordPress

Gravity Forms “datepicker” in het Nederlands

De Gravity Forms “datepicker” maakt gebruik van de jQuery UI datepicker. De teksten in deze datepicker zjin standaard in het Engels. De .po en .mo vertaal bestanden van Gravity Forms vertalen deze teksten helaas niet. Dit heeft te maken met dat de jQuery UI bibliotheek op een andere manier om gaat met vertalingen dan WordPress. Meer informatie hierover is te lezen op de i18n wiki pagina van de jQuery UI bibliotheek. De Nederlandse jQuery UI datepicker vertalingen zijn gelukkig gewoon beschikbaar in de jQuery UI code repository.

Voor het gemak kun je de vertaling ook downloaden vanaf mijn website. Zodra je dit bestand hebt gedownload moet je binnen je WordPress theme nog een koppeling maken naar dit bestand. Hiervoor plaats je het bestand in de volgende locatie binnen je theme:

httpdocs\wp-content\themes\je-eigen-theme-map\scripts\jquery.ui.datepicker-nl.js

De meeste logisch stap is om binnen je header.php bestand een link te maken naar dit bestand.

<script type="text/javascript" src="<?php bloginfo('template_directory'); ?>/scripts/jquery.ui.datepicker-nl.js"></script>

In eerste lijkt dit goed te werken, maar helaas resulteert dit in bepaalde gevallen in JavaScript fouten. Zodra je namelijk een Gravity Forms formulier zonder datepicker gebruikt zul je de volgende foutmelding krijgen.

$.datepicker is undefined
/wp-content/themes/je-eigen-theme-map/scripts/jquery.ui.datepicker-nl.js
Line 4

Dit komt doordat Gravity Forms de datepicker scripts alleen toevoegt zodra deze nodig zijn. Dit is terug te zien in het volgende bestand van de Gravity Forms plugin:

httpdocs\wp-content\plugins\gravityforms\form_display.php

if(self::has_date_field($form)){
	wp_enqueue_script("gforms_ui_datepicker", GFCommon::get_base_url() . "/js/jquery-ui/ui.datepicker.js", array("jquery"), GFCommon::$version, true);
	wp_enqueue_script("gforms_datepicker", GFCommon::get_base_url() . "/js/datepicker.js", array("gforms_ui_datepicker"), GFCommon::$version, true);
	$jquery_enqueued = true;
}

Om die reden kun je beter controleren of de “gforms_ui_datepicker” JavaScript wordt gebruikt. Vervolgens kun je het script met de Nederlandse vertaling toevoegen. In het volgende code fragment is te zien hoe je dit doet:

/**
 * Gravity forms translate datepicker
 */
function custom_translate_datepicker() {
	if(wp_script_is('gforms_ui_datepicker')) {
		wp_enqueue_script('gforms_ui_datepicker_nl', get_bloginfo('template_directory') . '/scripts/jquery.ui.datepicker-nl.js', array('gforms_ui_datepicker'), false, true);
	}
}

add_action('wp_print_scripts', 'custom_translate_datepicker');

Bovenstaande code kun je toevoegen aan het bestand functions.php binnen je theme.

Categorieën
PHP WordPress

Gravity Forms tab index probleem

In één van de websites die ik bij Pronamic heb ontwikkeld had ik een probleem met de tabindex van een aantal Gravity Forms formulieren op 1 pagina. De tabindex van de invoervelden van deze formulieren begonnen namelijk allemaal op 1.

<input name="input_1" id="input_1_1" type="text" value="" class="medium" tabindex="1" />
<input name="input_1" id="input_4_1" type="email" value="" class="small" tabindex="1" />

Hierdoor was het niet mogelijk om met behulp van de TAB toets eenvoudig door de verschillende invoervelden te navigeren. Gelukkig was de oplossing na een zoekopdracht bij Google snel gevonden.

Sinds Gravity Forms v1.3.13 Beta 1 zijn er WordPress filters beschikbaar om de tabindex aan te passen. In de changelog van Gravity Forms is daarover het volgende opgenomen:

- Added filter to define the tab index start value.
	add_filter("gform_tabindex_4", create_function("", "return false;"));

De 4 in gform_tabindex_4 staat voor de unieke Gravity Form id. De volgende code zorgt er voor dat Gravity Form met id 4 begint met een tabindex van 100.

add_filter('gform_tabindex_4', create_function('', 'return 100;'));
Categorieën
WordPress

WordPress Google Maps

Er zijn al een flink aantal Google Maps plugins te vinden in WordPress Plugin Directory. De zoekopdracht “google maps” in de WordPress Plugin Directory levert al 212 resultaten op. Toch vonden we bij Pronamic deze plugins niet altijd even handig. De beschikbare plugins hebben namelijk vaak een aantal minpunten:

  • Google Maps API versie 2

    Veel bestaande Google Maps plugins werken nog met versie 2 van de Google Maps API. Om deze API te gebruiken moet je een zogenaamde API sleutel aanvragen. Deze sleutel moet vervolgens weer worden verwerkt in de plugin configuratie. In versie 3 van de Google Maps API is dit echter niet meer nodig.

  • WordPress Shortcode API

    Een groot deel van de plugins werken met de WordPress Shortcode API. Dit is een erg krachtige techniek, maar niet altijd even gebruiksvriendelijk. In de inhoud van een bericht of pagina is namelijk een shortcode te zien:

    [google-map-sc external_links="true" zoom="3"]

    De notatie en syntax van shortcodes zijn niet altijd voor iedereen even duidelijk.

  • Extra tabellen in database

    Enkele plugins creëren extra tabellen in je WordPress database om data in op te slaan. In veel gevallen is dat volgens mij nergens voor nodig en wordt daarmee alleen de database vervuilt. WordPress biedt genoeg functionaliteiten om extra data op te slaan bij een bericht of pagina.

  • Custom Post Types

    Bijna alle plugins zijn ontwikkeld voordat WordPress 3 was gelanceerd. Daardoor zijn de plugins niet altijd even goed aangepast op de nieuwe functionaliteiten van WordPress 3. Zo zijn veel bestaande plugins alleen gericht op berichten en pagina’s, maar niet op andere zelf gedefinieerde post typen.

Om die reden hebben we zelf een nieuwe Google Maps plugin ontwikkeld. Deze plugin maakt gebruik van de Google Static Maps API en de nieuwe Google Maps JavaScript V3 API. Hierdoor is het niet nodig om een API sleutel aan te vragen en zal ook zonder JavaScript ondersteuning een map weergegeven worden.

Wat met name leuk is aan deze plugin dat je per post type kunt aangeven of de Google Maps functionaliteit aan of uit moet staan. Als je als ontwikkelaar gebruik maakt van de register_post_type functie van WordPress is deze plugin erg interessant. Het is namelijk heel eenvoudig om de Google Maps functionaliteit toe te voegen aan je eigen gedefinieerde post type.

Categorieën
WordPress

Weblog remcotolsma.nl online

Ik heb de domeinnaam remcotolsma.nl al een tijdje in mijn bezit, maar deed er altijd weinig mee. Vanavond heb ik maar even de tijd genomen om er een WordPress installatie op te plaatsen. Verwacht echter nu niet dat ik dagelijks, wekelijks of maandelijks berichten ga plaatsen. Wil je meer over me weten, volg me dan op één van de volgende websites: