Since July 2023, starting with one urgent translation problem.
Veterinary pharma group · DE · 2023–2026
Veterinary pharma group: three years across its seven WordPress sites
Since 2023 I've built page modules, campaigns, an event calendar, new sections and a group-wide typography change across a vet pharma group's seven WordPress sites.
I'm the developer on all seven group sites, the corporate site and six product sites.
The corporate site, edited by the client's own marketing team.
The client is a German maker of veterinary products. It runs a corporate site in three languages, and a family of product sites for pet and horse owners. Its own marketing team edits the corporate site.
A German web agency brought me in July 2023 for one urgent translation problem. Since then I have been the developer on all seven group sites: the 160-page corporate site, the event calendar, seasonal campaigns, product sites and a group-wide typography change. On the corporate site every change goes the same way: a local copy, then staging, then production after the client’s approval.
Projects
- 2023
Corporate typography rollout across seven sites
I rolled out one typography across the corporate site and six product sites, built on two or three different themes. The product sites had no staging.
I set the new heading font on the corporate site through the theme’s Sass variables, on staging first. Before touching the product sites I got the weights confirmed in writing, then did each site and reported it one by one. In a second round the body text moved to a new serif on six sites. Some weights were missing and rendered wrongly in Firefox, so I added them. On two product sites I found layout problems and listed them with a proposed fix for each, for the agency to schedule.
The heading font runs on all seven sites and the body font on six, and both are still in place.
Stack: WordPress, CSS, Sass
- 2023
Advent calendar and prize-draw campaign feature
The Advent calendar lived in an old plugin on a sister site, with 24 hard-coded doors. I moved it to the corporate site, where the marketing team runs it themselves.
Before building I reviewed the old plugin and agreed the door order and highlighting with the agency. Then I rebuilt the calendar as a page template in the corporate theme. Each door is an ACF field with its image, and any number of doors works. I contained the old Bootstrap styles, so they no longer touch the site’s fonts.
The prize draw is a form module for any page. It shows only between set dates, validates the email and gives clear messages. The draw fields are German only, so I hid them in the WPML translation editor with an admin-only stylesheet, and the pages went from 61% to 100% translated.
The client’s team fills the doors on its own, and the public page was live by the end of November.
Stack: WordPress, ACF, WPML, PHP, JavaScript, CSS
- 2023–2025
Troubleshooting theme changes on a product site
On a product site for horse owners, theme changes didn’t reach the page, and I looked for the reason.
In 2023 the cause was the cache. I versioned the stylesheet, got access to the cache and finished the job. In 2025 a mobile menu fix didn’t show at all. I added a marker class and a dynamic stylesheet version, tested uploads over FTP and SFTP and checked every stylesheet in the network panel, and recorded all of it on video.
That gave the agency a case it could reproduce, which rules out the browser cache, the stylesheet version and the upload method. So the next step could start at the real cause.
Stack: WordPress, PHP, CSS
- 2023–2026
Event calendar rebuild after a major plugin update
A plugin update from version 5 to 6 replaced all the HTML and classes of the seminar calendar, so I rebuilt it.
I rebuilt the list, past-events and month views as template overrides in the theme and left the plugin itself untouched. From the client’s feedback I brought back the original look: fonts, category colours on titles and dots, a legend for event types. The coloured day dots are PHP templates and CSS with no JavaScript, so they worked in Firefox before it supported CSS
:has(). The whole bar of a multi-day event is clickable on desktop and mobile.When a month-view issue came up, I isolated it on a staging clone with all custom changes switched off, and it turned out to be the plugin’s own behaviour. In 2025 an update broke things and I rolled it back. In 2026 I set the German date format.
The client accepted the calendar in July 2023, and it runs on these templates in both languages.
Stack: WordPress, The Events Calendar, WPML, PHP, CSS
- 2023–2026
WordPress and WPML development on a trilingual corporate site
I keep developing a 160-page corporate site in three languages, on a custom theme with ACF modules, WPBakery and WPML. The client’s marketing team edits it.
An editor lost content when switching language. With a test user I found it happened on that one account only. The quick fix went live, and I wrote down the deeper one. Slider texts couldn’t be translated, so I corrected the field translation settings and a field group saved in the wrong source language. After a WPML update, fields started leaking into translations. I compared copies from before and after the update and fixed it with WPML’s documented code. Content was also lost on save, because three identical per-language field groups overrode each other, and I resolved that too.
I also built new page modules the editors combine themselves: a square tile and a three-tile section with text, image or text on image. Each one lives in its own file, so no existing module changed. Then came a newsletter sign-up section and a new footer. Smaller jobs were a logo update, menu fixes, corrections to the English version, a PHP upgrade I tested on a local copy first, and in 2026 a plugin and licence report with the order of updates.
These modules are in the live theme.
Stack: WordPress, WPBakery, ACF, WPML, PHP
- 2024
WordPress site extension: slider, heroes and card grids
For a product site for pet owners, which shares its theme with sister sites, I built a new homepage slider, hero images and responsive tables.
I built the slider with Splide.js and load it only on the home page. The slides come from standard custom fields, so there is no heavy slider plugin. Each page got a full-width hero from its featured image, with a height that follows the screen. I delivered a three-card grid with tooltips in three versions, with a short guide for the editors to reuse it. On phones a product table got an extra header column, and the footer now stays at the bottom of short pages.
Pet owners now get the same hero on every page and tables they can read on a phone. The sister sites stayed unchanged.
Stack: WordPress, WPBakery, PHP, JavaScript, Splide
- 2026
Staging-to-production migration of a new environmental section
I moved a three-page environmental section with images and PDFs from staging to production, and kept the old page’s links and search rankings.
I rebuilt the environment page on its existing address, so old links and search results still land on it, and created two new pages. All images and PDFs went to the live media library with rewritten paths, and the section went into the menus. Then I checked the text against staging line by line. Every link and image returned HTTP 200, and a crawl of the sitemap found nothing pointing at the old page or at staging.
The PDF showed a wrong title in the browser tab. I corrected it in the file metadata only, so the approved document stayed as it was. After the client translated the pages, I checked the links on the pages in all three languages and corrected two buttons.
The section went live in August 2026. Each language links to its own pages and to the current report.
Stack: WordPress, WPML, PHP
Forms that failed now and then, fixed at the cause
Contact and referral forms failed now and then. I found the page cache behind it and fixed both form pages, while the rest of the site stayed cached.
A read-more button the client sets with one tag
I wrote a small script that turns WordPress's standard more tag into a read-more button inside page-builder layouts, so the client sets it herself.
A step-by-step care request form for a senior home-care service
I built a seven-step form where families request care. Its code has not changed since April 2024 and runs on the live home page today.
Contact
Have something similar?
Use the form or message me on LinkedIn.
Already working with me on Upwork? Write there.