WooCommerce ‘Sale!’ tekst wijzigen

In het bericht “WooCommerce ‘Toevoegen aan winkelwagen’ tekst wijzigen” beschreef ik al hoe de “Toevoegen aan winkelwagen” tekst gewijzigd kan worden. In dit bericht is te lezen hoe de “Sale!” tekst gewijzigd kan worden.

WooCommerce "Sale!" tekst wijzigen

De WooCommerce ontwikkelaars passen de filter ‘woocommerce_sale_flash’ toe op de “Sale!” tekst waardoor deze eenvoudig is aan te passen. In onderstaande code fragment is te zien hoe dit gerealiseerd kan worden:

Bovenstaande code kan toegevoegd worden aan het WordPress functies thema bestand (functions.php). Vaak kan de code zonder problemen aan het eind van dit bestand toegevoegd worden. Als je niet werkt met een maatwerk thema dan kan het overigens handig zijn om deze toevoeging binnen een child thema of plugin te definiëren. Op die manier kun je zonder problemen je thema blijven updaten.

PHP private/protected eigenschappen aanpassen

Binnnen de Pronamic iDEAL plugin breiden we verschillende WordPress plugins uit met de iDEAL gateway. Zo voorzien we ook de Shopp webwinkel plugin voor WordPress van een iDEAL gateway module.

De Shopp ontwikkelaars hebben het echter niet eenvoudig gemaakt om vanuit een andere WordPress plugin betalingsgateways toe te voegen. In de Pronamic iDEAL plugin moeten we daarom op een omslachtige manier te werken gaan om dit toch te realiseren.

Hoe we dit gerealiseerd hebben voor Shopp versie 1.0 tot 1.2.9 is te zien in het volgende Pronamic iDEAL bestand:

https://github.com/pronamic/wp-pronamic-ideal/blob/2.3.1/classes/Pronamic/Shopp/IDeal/AddOn.php#L51

In de recente gelanceerde Shopp versie 1.3 functioneerde deze code echter niet meer correct. De Shopp ontwikkelaars hebben in het inladen van modules namelijk flink over de kop gegooid. Na de Shopp code van versie 1.3 helemaal doorgelopen hadden kwamen we al snel tot de conclusie dat de Shopp ontwikkelaars het ons vrij lastig hebben gemaakt.

De Shopp ontwikkelaars hebben vrijwel geen WordPress filters of acties beschikbaar gesteld om betalingsgateways vanaf andere locaties in te laden.  Wel worden binnen Shopp betalingsgateways nu vanaf 2 loacties ingeladen, namelijk:

  • /wp-content/plugins/shopp/gateways
  • /wp-content/shopp-addons

https://github.com/ingenesis/shopp/blob/1.3/core/model/Gateway.php#L453

Nu zou je denken dat daar dan eenvoudig een 3e locatie aan toegevoegd kan worden, maar dat was helaas niet het geval. De paden waren de betalingsgateways vanuit worden geladen stonden namelijk vast in de code en kunnen niet aangepast worden.

Uiteindelijk kwamen op het idee om de paden uit te breiden met behulp van de PHP Refelection bibliotheek. Met behulp van deze bibliotheek is het mogelijk om niet toegankelijke eigenschappen van classes/objecten wel toegankelijk te maken.

Via de volgende code konden we zo een nieuwe gateway moduels locatie toevoegen aan de Shopp plugin:

global $Shopp;

$class = new ReflectionClass( 'GatewayModules' );

$property = $class->getProperty( 'paths' );
$property->setAccessible( true );

$paths = $property->getValue( $Shopp->Gateways );
// @see https://github.com/ingenesis/shopp/blob/1.3/Shopp.php#L193
$paths[] = Pronamic_WordPress_IDeal_Plugin::$dirname . '/classes/Pronamic/Shopp/Gateways';

$property->setValue( $Shopp->Gateways, $paths );

Samba via SSH/terminal

Vanavond moest ik vanaf een externe locatie een Samba share benaderen die alleen via een lokaal netwerk beschikbaar was. Gelukkig had ik wel toegang tot een Debian systeem op dit zelfde netwerk. Na een zoektocht via Google vond ik een eenvoudig manier om de Samba share via het Debian systeem te benaderen:

Via een aantal snelle commando’s kon ik een map op de Samba share kopiëren naar het Debian systeem. Vanuit daar kon ik de map inpakken en eenvoudig downloaden naar mijn eigen werkplek. In het kort waren de volgende commando’s nodig:

ssh remco@debian
smbclient //share -U remco
tarmode
recure
prompt
mget folder\
exit
tar -cvf folder.tar folder/

Erg handige om even snel een map vanaf een lokale Samba share te halen.

Rabobank iDEAL fout 958 en waardeloze support

Gisteren probeerde ik een bestelling bij Bax-shop.nl te betalen. Helaas kreeg ik na het kiezen van iDEAL en de S-toets stappen te volgen telkens de volgende foutmelding te zien:

Rabobank iDEAL fout 958

In eerste instantie denk je dan een fout gemaakt te hebben en probeer je het nogmaals. Na 5 keer geprobeerd te hebben gaf ik het op en nam ik contact op met mijn lokale Rabobank (Rabobank Burgum-De Lauwers).

Er werd mij gevraagd om de batterij status van mijn Random-reader te controleren. Deze stond op 14% en dit bleek aan de lage kant te zijn waardoor S-toets berekeningen soms fout gaan.

Daarom direct een andere Random-reader gepakt en de betaling nogmaals geprobeerd. Helaas opnieuw hetzelfde probleem. Ook mijn zakelijke pas en passen van mijn collega’s gaven dezelfde problemen.

Vanochtend daarom nogmaals contact opgenomen met Rabobank Burgum. Het probleem uitgelegd en geïnformeerd naar een oplossing. Ze konden dit keer geen fouten ontdekken, mijn Random-reader was goed en mijn pas actief.

Helaas kon ik nog steeds niet met iDEAL afrekenen. Na veel doorvragen en informeren kreeg ik als antwoord: “Ik vind het heel vervelend, maar helaas kan ik u hier niet mee helpen.”.

In plaats van dat de Rabobank het probleem oplost moest ik maar een andere betaalmethode kiezen bij Bax-shop.nl. Uiteraard aangegeven dat ik gewoon met iDEAL wil betalen en dat dit gewoon zou moeten functioneren.

Opnieuw kreeg ik te horen dat ze me niet kunnen helpen met problemen op hun eigen iDEAL-platform. Al met al had ik het idee dat mijn probleem niet serieus werd genomen en dat ze geen enkele moeite wilde doen om mij te helpen.

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

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]

ABN AMRO – iDEAL Only Kassa foutmelding

Gebruikers van de “ABN AMRO – iDEAL Only Kassa” iDEAL-variant zullen ongetwijfeld een keer tegen de volgende foutmelding aangelopen zijn:

An error has occurred; please try again later. If you are the owner or the integrator of this website, please log into the ABN AMRO Bank back office to see the details of the error.

In deze foutmelding wordt verwezen naar de “ABN AMRO Bank back office” omgeving. Veel gebruikers zullen dan denken dat ze moeten inloggen in de Ogone omgeving:

Na telefonisch contact met de “Special Desk e-Commerce” van de ABN AMRO bleek echter de “ABN AMRO Bank back office” niet beschikbaar is voor “ABN AMRO – iDEAL Only Kassa” gebruikers.

De betreffende foutmelding kan echter vaak opgelost worden door een keer alle gegevens goed te controleren. Mocht je er vervolgens als nog niet uitkomen dan kan de “Special Desk e-Commerce” van de ABN AMRO je vaak goed helpen.

Ook bij Pronamic kunnen we je vaak goed helpen met de installatie en configuratie van iDEAL. We hebben hier veel ervaring mee en kunnen vaak nog dezelfde de iDEAL installatie tegen voordelig tarief realiseren.

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

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: