Categorieën
WordPress

WordCamp Europe 2013 zaterdag 5 oktober

Afgelopen weekend hebben we met Pronamic WordCamp Europe 2013 in Leiden bezocht. Hier hebben we verschillende presentaties bijgewoond en weer flink wat inspiratie en ideeën opgedaan. In dit bericht kort per presentatie enkele punten die ik interessant vond.

Zaterdag 5 oktober

Behind the Scenes at Smashing Magazine door Vitaly Friedman

Quality content is expensive

Better Site Stacks with Composer door Andrey “Rarst” Savchenko

De presentatie van Rarst is terug te vinden op de volgende webpagina:
http://composer.rarst.net/slides/

…a lot of professionals are running professional sites like they are still hobbyists.

Mark Jaquith #

The Life of a Theme door Tammie Lister

De presentatie van Tammie Lister is terug te vinden op de volgende webpagina:
https://speakerdeck.com/tammielis/the-life-of-a-theme

 Start » Plan » Moodboard » Styleguide » Schets » Wireframes » Ontwikkel » Filter » Test » Lanceer » Verfijn

Is the Freemium Model Right for Your Plugin? door Kim Gjerstad

De presentatie van Kim Gjerstad is terug te vinden op de volgende pagina:
http://www.slideshare.net/kgjerstad/is-the-freemium-plugin-right-for-your-plugin

Update regularly

Unlocking Enterprise with WordPress door David Coveney

De presentatie van David Coveney is terug te vinden op de volgende pagina:
http://www.slideshare.net/interconnectit/unlocking-enterprise-with-wordpress

WordPress is “Enterprise Ready!”

From plugin developer to running a successful WordPress business: A ManageWP Case Study

Writing Secure WordPress Code

Meer

Categorieën
Geen categorie PHP WordPress

WordPress oEmbed en de Vimeo API (Froogaloop)

De videoplayer van Vimeo kan met behulp van JavaScript aangestuurd worden. Op de JavaScript API pagina van Vimeo is hier meer informatie over te vinden. Ook is de kleine JavaScript bibliotheek Froogaloop erg handig om hiervoor te gebruiken.

Om gebruik van te maken van de Vimeo JavaScript API moet echter de embed code aangepast worden. Ze moet de video van de URL in de iframe uitgebreid worden met een ‘api’ parameter.

http://player.vimeo.com/video/VIDEO_ID?api=1

Als je meerdere URL’s op 1 pagina hebt ingevoerd moet daar ook nog een ‘player_id’ parameter aan toegevoegd worden:

http://player.vimeo.com/video/VIDEO_ID?api=1&player_id=vimeoplayer

Helaas ondersteund WordPress en Vimeo oEmbed deze parameters nog niet. Dit is echter eenvoudig te corrigeren met behulp van de volgende fiter functies. Met behulp van de eerste filter voegen we de ‘api’ en ‘player_id’ parameter toe aan de video URL:

In de tweede filter functie zorgen we dat het ‘iframe’ element dezelfde ‘id’ attribuut krijgt als de ‘player_id’:

Vervolgens kunnen we de volgende shortcode gebruiken om gebruik te maken van WordPress oEmbed en de Vimeo API en player ID:

[embed player_id="uniqid"]http://vimeo.com/31215588[/embed]
Categorieën
PHP WooCommerce WordPress

WooCommerce LESS compile fout

Onlangs werden we bij Pronamic benaderd door een WooCommerce gebruiker die na een WooCommerce update van 2.0.12 naar 2.0.14 de volgende foutmelding te zien kreeg:

Kon woocommerce.less niet compileren: expected color value: failed at `color:fade( desaturate( @highlight, 75% ), 50% );` /wp-content/plugins/woocommerce/assets/css/woocommerce.less on line 181

Na een lange zoektocht kwamen we bij de WooCommerce ‘woocommerce_compile_less_styles’ functie terecht:

https://github.com/woothemes/woocommerce/blob/v2.0.14/admin/woocommerce-admin-functions.php#L415

Deze functie moet LESS omzetten naar CSS, maar daar ging blijkbaar iets fout met de ‘highlight’ kleur.

Na wat debug werk kwamen we er achter dat $colors variabele als volgt was gevuld:

array
  'primary' => string '#9D3ED5' (length=7)
  'secondary' => string '#EF7425' (length=7)
  'highlight' => string '#cccc' (length=5)
  'content_bg' => string '#ffffff' (length=7)
  'subtext' => string '#777777' (length=7)

De ‘highlight’ kleur bevatte een ongeldig kleur waarde ‘#cccc’, hier ontbraken twee tekens. Door de hightlight kleur even tijdelijke in te programmeren kon dit probleem opgelost worden:

$colors['highlight'] = '#CCCCCC';

Vervolgens konden we via de WordPress admin omgeving en WooCommerce instellingen pagina de foutieve kleur corrigeren.

WooCommerce LESS compile opmaak fout

Categorieën
PHP WordPress

WordPress comment type uitsluiten in comment count

Binnen de Pronamic Post Like plugin gebruiken we het WordPress reactiesysteem om ‘likes’ bij te houden. Hiervoor plaatsen we voor elke ‘like’ een reactie, zodat we per gebruiker kunnen bijhouden wie wat ‘liked’. Elke ‘like’ zorgde er echter ook voor dat het aantal reacties werd verhoogd.

Dit was niet gewenst binnen de website die we aan het ontwikkelen waren. Daarom gingen we opzoek naar een oplossing. Na het doorbladeren van de code van het WordPress reactiesysteem kwamen we al snel de ‘wp_update_comment_count_now’ functie tegen:

https://github.com/WordPress/WordPress/blob/3.6/wp-includes/comment.php#L1620

Binnen deze functie wordt de ‘wp_update_comment_count’ actie aangeroepen. Hier konden we eenvoudig op inhaken om het aantal reacties opnieuw te tellen en een specifieke comment type uit te sluiten:

Categorieën
WordPress

WordPress User Query filter op post type author

Het is standaard niet mogelijk om binnen een WordPress User Query te filteren op auteurs van een specifieke post type. Met behulp van een een filter is deze functionaliteit echter vrij eenvoudig toe te voegen.

Vervolgens kan eenvoudig via een_User_Query argument gefilterd worden op een specifieke post type.

Categorieën
PHP WordPress

WordPress Google Conversion shortcode plugin

In 2012 schreef ik in het bericht “WordPress Google Conversion shortcode” al over hoe je eenvoudig een Google Conversion shortcode kunt integereren in een WordPress bericht of pagina. Inmiddels hebben we de shortcode beschikbaar gesteld in de “Pronamic Google Conversion” plugin.

https://github.com/pronamic/wp-pronamic-google-conversion

Categorieën
JavaScript jQuery WordPress

Gravity Forms dagen tussen datum berekenen

Een aantal weken terug werd ik gevraagd om het aantal dagen tussen twee Gravity Forms datum velden te berekenen. Na een zoektocht via Google kwam ik al snel een JavaScript oplossing tegen op Stack Overflow:

http://stackoverflow.com/a/2627493

Naar aanleiding van dit topic heb ik het volgende script geschreven die inhaakt op de twee Gravity Forms datum velden.

Dit kan erg handig zijn als je het aantal dagen tussen twee datum wilt gebruiken voor het berekenen van bijvoorbeeld een prijs.

Categorieën
iDEAL WordPress

Ogone DirectLink 50001111 fout

Tijdens het onderzoeken van de werking van Ogone DirectLink API kregen we bij elk bericht die we naar Ogone communiceerden het volgende bericht terug:

<?xml version="1.0"?>
<ncresponse

orderID="1375185042"
PAYID="0"
NCERROR="50001111"
STATUS="0">
</ncresponse>

Aan de hand van deze foutmelding konden we helaas niet achterhalen wat er precies fout ging. In het Ogone “Lijst van betalingsstatussen en foutcodes” document konden we lezen dat deze foutcode voor een “Datavalidatiefout” stond, maar dat hielp ook weinig.

Na een zoektocht via Google kwamen we al snel enkele andere Ogone gebruikers tegen die ook dit probleem hadden:

Uiteindelijk hebben we meer opheldering kunnen krijgen over de betreffende foutcode door Ogone meer parameters terug te laten sturen. Via het Ogone dashboard kan dit op de pagina “Configureren » Technische informatie » Feedback” onder “Directlink » Dynamische parameters” geconfigureerd worden. Door de ‘NCERRORPLUS’ parameter toe te voegen wordt het XML antwoord van Ogone veel duidelijker:

<?xml version="1.0"?>
<ncresponse

orderID="1375185989"
PAYID="0"
NCERROR="50001123"
STATUS="0"
NCERRORPLUS="Card type not active for the merchant">
</ncresponse>

Na het wijzigen van ons Visa creditcard testnummer ‘4111111111111111’ naar een MasterCard testnummer ‘5555555555554444’ konden we verder met het testen van de Ogone DirectLink API.

http://www.paypalobjects.com/en_US/vhelp/paypalmanager_help/credit_card_numbers.htm

Waarschijnlijk gaan we binnenkort de Ogone DirectLink API ook ondersteunen binnen de Pronamic iDEAL plugin zodat deze nog breder is in te zetten.

Categorieën
PHP WordPress

WordPress multitaal (WPML) per taal andere Google Analytics code

Ik kwam recent een website tegen die opgezet was met behulp van de WPML multitaal plugin. Deze website had een maatwerk thema waarin de Google Analytics tracking code per taal in het thema was geprogrammeerd. Een minder flexibele oplossing en daarom wilden we graag overstappen naar de Google Analytics for WordPress plugin. De tracking code moest echter wel per taal anders zijn, dit hebben we behulp van de volgende code gerealiseerd:

Categorieën
WordPress

Unit tests voor WordPress plugins

Een aantal WordPress plugins die we ontwikkelen bij Pronamic worden steeds complexer. Om de verschillende functionaliteiten van deze plugins bij elke release goed te testen kan het interessant zijn om gebruik te maken van unit testing. Met behulp van PHPUnit kunnen eenvoudig tests gedefinieerd worden en vervolgens automatisch uitgevoerd worden. Er zijn een aantal zeer interessante tools beschikbaar waarmee deze tests eenvoudig opgezet kunnen worden.

svn co https://unit-tests.svn.wordpress.org/trunk wordpress-tests
export WP_TESTS_DIR="/Users/remco/wp/wordpress-tests"