A corporate site in Edinburgh sits alongside a fintech office in Quartermile, a hotel in Old Town, or a seasonal campaign landing before Edinburgh Festival Fringe. That is not a reason for WordPress to pretend it is a trading platform or a hotel booking system at Booking.com scale. It is a reason for the theme, Gutenberg blocks, CPT and plugins to be written the way a British compliance team, a product editor and a legal team that reads UK GDPR expect, not just the way a Lighthouse score expects.
WPPoland builds this WordPress from a senior Polish team for businesses in Edinburgh and the wider Scottish technology ecosystem. Scope is WordPress development: block or classic theme, custom plugins, Gutenberg, CPT, ACF or native blocks, REST integrations and code review on Git. WooCommerce stores, maintenance retainers and contact are separate topics, with links at the end.
#WordPress development in Edinburgh
Edinburgh is not London and should not read like London in copy. Scotland’s capital has a different vendor profile, a different decision pace and a different agency ecosystem. Edinburgh combines fintech, seasonal tourism, Scotland’s public sector and a strong software cluster around the University of Edinburgh and Edinburgh Napier University. Edinburgh Digital Hub gathers startups, scaleups and corporate product teams under one digital growth narrative, but a brief from a client in Edinburgh sounds different from a City of London brief: less about global checkout, more about forms collecting data under UK GDPR, public-sector accessibility, and a site that survives August traffic peaks without collapsing on the first Fringe weekend.
CodeBase at Edinburgh BioQuarter is one of Scotland’s best-known technology incubators. Companies from there build SaaS products, B2B platforms and institutional sites with accessibility and auditability requirements. Skyscanner, though globally distributed, shaped local engineering expectations: code review, tests, documentation and production responsibility are not optional. WordPress in this environment is often a fintech product page, an institutional portal or a services firm site serving the financial sector. A theme that cannot survive a report publication or product announcement at peak hours produces an operational incident, not a minor ticket after the weekend.
The technology corridor along Leith Walk and around Quartermile connects Royal Bank of Scotland offices, Standard Life Aberdeen (now abrdn), smaller fintechs and hundreds of software firms between the city centre and the port. Companies here often build sites with lead-generation forms, CRM integrations and regulatory content that must stay aligned with privacy policy and cookie policy. That is a different profile from a Shoreditch creative agency: more questions about UK GDPR, audit logs and data retention, less about hero-section wow effects.
WordPress Meetup Edinburgh meets regularly in the area and brings together developers, agencies and freelancers working on WordPress in the region. It signals that the local community knows WordPress Coding Standards, debates Gutenberg, and sees the difference between a block theme and a page builder generating shortcodes in content. A brief from a client in Edinburgh often sounds like: “we have Divi or Elementor, editorial is scared of migration, and the CTO wants Gutenberg and Git”. That is a content-model and delivery-process problem, not a marketplace template problem.
The typical project that reaches senior developers in Edinburgh does not sound like “make us a nice site”. It sounds like: inherited page-builder themes, a fintech firm publishing product updates in narrow time windows, a contact form collecting personal data under UK GDPR, and a new service-line subpage built by copying last year’s page and manually swapping version numbers. That is technical debt that surfaces on a Friday evening, not in an SEO audit.
#Block theme, classic theme and custom plugin
A new build in Edinburgh starts with a decision that costs months if you get it wrong: whether presentation lives in a block theme with theme.json, in classic PHP templates, and what goes into a plugin. That decision is written down before the first commit.
#theme.json, patterns and theme boundary
A block theme holds tokens: palette, typography scale, spacing, content widths. For a Quartermile fintech that means a restrained corporate layout, a readable typeface without ornament, and components that do not break on long product names or regulatory reference numbers. For an Old Town hotel it means a tourist-friendly layout, WCAG 2.2 AA contrast, and components that work on slower mobile connections in August. Block patterns describe repeatable layouts: hero with product material, office grid (Edinburgh is not Glasgow, Glasgow is not Aberdeen), attributed quote block, publication card with date, footer with a privacy-policy link aligned with UK GDPR.
Full site editing (FSE) makes sense when the editorial team genuinely needs control over header and footer. In practice many fintech firms in Edinburgh do not want that: the header is a brand and compliance element, not a playground. The block theme stays, but template parts (header, footer) are locked, and editorial works within patterns and custom blocks. That is a compromise, not a half measure.
Every custom block gets block.json, a category, an icon and attributes with schema. Where content must reach search engines and RSS, rendering goes server-side. React in the editor serves InspectorControls and preview, not a front-end SPA pretending to be WordPress. The handbook at developer.wordpress.org is the API contract source, not a training slide.
#When a classic PHP theme stays
Inherited installations in Edinburgh are often five or seven years old: child theme on a commercial skeleton, ACF wired into page.php, shortcodes in content, jQuery from the pre-block era, a separate page copy for every seasonal campaign. Rewriting that to FSE “because it is 2026” costs more than fixing template hierarchy, extracting logic into a plugin, and adding Gutenberg only where editorial actually assembles new landings.
A classic theme stays when:
- conditional logic lives in templates (different menu for investor, retail client, B2B partner) and moving it to
theme.json simplifies nothing; - the editorial team publishes hundreds of pages in the classic editor and FSE training would be a bigger risk than debt;
- the child theme is thin and the problem is plugins and autoload, not the template engine itself.
Even then new pieces go in as blocks, not as more shortcodes. A shortcode in 2019 content stays for migration. New code does not add more.
#Function to plugin, appearance to theme
The boundary is simple and recorded in the runbook. The theme knows how to display. The plugin knows. Product CPT, CRM queue, REST endpoint for intranet, a “regulatory content editor” role without publish_pages on the public production site: that is a plugin. Colours, grid, hero pattern: that is the theme. If the service catalogue disappears after a theme change, the architecture was wrong.
A custom plugin has its own prefix, PSR-4 autoload, a main file with Plugin Name header and semver version, and tests where logic matters (publication dates, CRM field mapping, contact-form validation). Business logic does not go into the theme’s functions.php, because functions.php dies with the theme, and a firm in Edinburgh changes branding partners more often than it changes its content model.
Layer comparison at kickoff:
| Layer | What lives there | Example in Edinburgh |
|---|
| Theme | presentation, tokens, patterns | fintech product landing, footer with privacy policy |
| Plugin | CPT, roles, REST, integrations | product, office location, audit logs |
| Gutenberg | editorial without HTML | publication pattern, team block, event card |
| Staging and Git | process, not feature | branch, review, freeze before Fringe |
#Gutenberg, CPT and ACF for fintech and services
Gutenberg without a content model ends with every subpage as a unique block collage and nobody able to produce a list. In Edinburgh lists are concrete: products and services, regulatory publications, team members, office locations (Quartermile is not Leith, Leith is not BioQuarter), events, job openings. These are objects, not “another page in the tree”.
#Custom post types instead of copied landings
We register CPT with custom capabilities, not mapped to post. A regulatory content editor edits a publication record, not delete plugins. CPT archives get a template or query pattern. Single objects get a template that prevents layout drift beyond the agreed structure. Taxonomies stay separate: publication type (report, notice, case study) does not mix with blog tags.
ACF has a place here, but not as a block substitute. ACF fields on CPT work for data that is fields, not layout: publication date, document version number, language version, PDF file, “embargo until” flag. Person or article page layout is assembled in Gutenberg. Mixing ACF Flexible Content with the full block editor on the same object creates two sources of truth and an editor who does not know where to click.
Where ACF is unnecessary, block attributes in block.json are enough. A “person with quote” block does not need a field group on every page. It needs attributes and possibly InnerBlocks for the biography. Fewer plugins in the admin means less attack surface and fewer conflicts with consent and cache plugins.
A seasonal campaign landing copied from last year’s page is debt that surfaces in August before Fringe. A CPT object with season, date and material fields survives the 2027 campaign without copying the tree. The template reads the object. The editor changes the date, not HTML.
#Server blocks instead of shortcodes
A shortcode in content is debt visible only at migration. New code in Edinburgh goes in as a block with server render: semantic markup, attributes in the block comment, filterable output. A publication-list block reads CPT, caches the query with a transient with explicit TTL and invalidation on save_post, not on every request during a campaign peak.
Block code review checks three things before a branch merges to main: whether the block works with JS disabled on the front preview, whether attributes have types and defaults, and whether it does not load the full editor build on the front. Gutenberg that adds a megabyte of React to a director biography page does not pass review.
#UK GDPR, cookies and forms in the British context
After Brexit the United Kingdom kept its own version of GDPR, commonly called UK GDPR, alongside the Data Protection Act 2018. The supervisory authority is the Information Commissioner’s Office (ICO). For a WordPress site in Edinburgh that is not an abstract legal paragraph. It is decisions in forms, consent plugins, privacy policy and audit logs.
What we write into the brief and the code:
- Forms collecting personal data (B2B enquiries, newsletters, contact forms, application forms) get an explicit legal basis, a consent checkbox where consent is required, and field minimisation. Fields you do not need for the form’s purpose do not exist.
- Consent plugins (CookieYes, Complianz and similar) are configured so marketing scripts do not load before acceptance. That is a theme and enqueue-order decision, not a maintenance ticket after the first ICO report.
- Privacy policy and cookie policy are templates with fields, not blocks an editor can delete from the tree. In Edinburgh those pages are compliance elements, not marketing footer afterthoughts.
- CRM integrations (HubSpot, Salesforce, Pipedrive) get data-flow documentation: what reaches the external system, how long, who is the controller. Data processing agreements (DPAs) are the client’s decision, but WordPress configuration must allow that decision to be implemented.
- Audit logs for forms and admin changes help during incidents. If someone asks “who changed contact-form settings on Friday before the report publication”, the answer cannot be “we do not know”.
For a personal-data breach incident, UK GDPR Article 33 gives the controller 72 hours to notify the ICO where the breach is likely to result in a risk to individuals’ rights. That is why the development and maintenance log needs the date of first knowledge, not the date “when the developer returned from holiday”. We do not promise “UK GDPR compliance” without a process owner on the client side. We promise technical configuration the owner can describe in documentation.
For WooCommerce stores in GBP, payment gateway integration handling British pounds, VAT and invoices aligned with UK tax law is a separate brief on the WooCommerce developer in Edinburgh page. This page stays with WordPress development, not checkout.
#Accessibility: Public Sector Bodies Regulations and private sector
Accessibility in Edinburgh is not one regulation. Public institutions (universities, NHS Scotland, Scottish Government, public bodies) fall under the Public Sector Bodies (Websites and Mobile Applications) Accessibility Regulations 2018, which require WCAG 2.1 AA (with perspective on moving to WCAG 2.2). The private sector does not have an identical legal obligation, but the Equality Act 2010 creates a context where an inaccessible services site is legal and reputational risk, not a nice-to-have.
What the team does in code:
- Semantic HTML markup, correct heading hierarchy, form labels linked to fields via
for/id, error messages readable by screen readers. - Colour contrast aligned with WCAG 2.2 AA, focus visible on all interactive elements, keyboard navigation through menus and modals.
- Images with meaningful
alt attributes, video with captions where material is published on the public site. - axe-core scan in CI plus manual keyboard path on key templates: contact form, cart (if present), main navigation, search.
- Accessibility statement for public bodies as a template with fields, not a page forgotten in the footer.
For Quartermile fintech firms accessibility also has a product dimension: PDF documents with HTML alternatives, data tables with headers, forms fillable by keyboard. WordPress does not replace a trading platform, but the product promotion site must be usable for every visitor, not only a mouse user on a fast laptop.
#Integrations that repeat in Edinburgh
Lead-generation forms and B2B enquiries are the most common integration point for fintech and software firms from Edinburgh Digital Hub. In practice that means connecting WordPress to CRM, field validation aligned with UK GDPR, and rate limiting on public endpoints so a form does not become a spam vector during report publication hour.
For tourism and hotel firms in Old Town the second recurring integration is booking systems and event calendars: embed of an external system, synchronisation with the Fringe calendar or own seasonal events, public-layer cache so August traffic does not kill the server. WordPress does not replace a hotel PMS, but the promotional site must survive the seasonal peak.
For scaleups from CodeBase the third integration is often connection to product tools: API documentation, product changelog, status page, webhook to Slack or Teams when a new version publishes. Every integration gets webhook documentation, an error matrix and end-to-end testing on staging before production deployment.
WooCommerce stores with GBP checkout, Royal Mail or DPD integration and sales reporting for the finance team are described on the separate WooCommerce developer in Edinburgh page. Store theme development, checkout plugins and warehouse integrations share the same technical stack but a different brief from a B2B corporate site.
#How we work
Every project in Edinburgh follows a structured process that minimises risk and maximises transparency:
- Discovery and audit. We review the current site architecture, content structure, analytics data and business goals. We document technical debt, identify quick wins and define measurable success criteria before writing the first line of code. We also check the Fringe calendar, product publication dates or seasonal campaigns so deployment does not land in a critical window.
- Technical specification. Based on the audit we produce a detailed specification covering architectural decisions, technology choices, timeline, milestones and scope. You approve the plan before development starts.
- Development sprints. We work in one-to-two-week iterations with a demo at the end of each sprint. You see progress continuously, give feedback in time and can reprioritise without derailing the project.
- Staging review. The complete solution runs on staging identical to production. You test with real content, verify integrations and approve for launch. We fix issues before go-live.
- Launch and handover. We handle DNS changes, SSL configuration, cache warm-up, redirect verification and monitoring setup. After launch we stay on standby for 72 hours for immediate issue resolution.
#Typical challenges we solve
Businesses in Edinburgh regularly come to us with these problems:
- Page-builder to Gutenberg FSE migrations before a seasonal campaign or product publication: we extract content, rebuild layouts as block patterns and train editorial teams without disrupting live traffic or SEO positions during peak visit weeks
- Performance problems from plugin overload on fintech and tourism sites: we audit installed plugins, replace heavy dependencies with lightweight custom code, implement caching layers and reduce database queries from hundreds to single digits
- WordPress scaling for Edinburgh Festival Fringe and seasonal campaigns: we configure Cloudflare full-page caching with exceptions for forms, optimise database indexes, implement query-result caching and run load tests before season start
- Security hardening for sites collecting contact data or application forms: Content Security Policy headers, disabled XML-RPC, enforced two-factor authentication for the admin panel and rate limiting on login endpoints
Core Web Vitals are a Google ranking factor and a conversion factor on a site collecting B2B leads or seasonal bookings in August. We do not promise a specific percentage delta before audit, because improvement scale depends on the starting state of each installation. What we do systematically:
- Asset optimisation. Images processed through the build pipeline into responsive srcset in WebP and AVIF formats, CSS purged and inlined for above-the-fold content, JavaScript tree-shaken and loaded via dynamic imports.
- Caching architecture. Multi-layer caching: browser cache, CDN (Cloudflare), application cache (Redis), database query cache with intelligent invalidation, with separate treatment for dynamic fragments when the site has a contact form or video embed.
- Network optimisation. HTTP/3 with QUIC, Brotli compression, preconnect and dns-prefetch hints, critical resource prioritisation for first view.
- Rendering optimisation. Critical CSS inlining, asynchronous style loading, lazy loading for images and iframes, animation triggers based on Intersection Observer.
Every performance decision is data-driven. We measure before and after, document impact and include a performance baseline in project documentation so regression after the next plugin update is visible immediately, not after the fact in a seasonal window.
#Local SEO and digital visibility in Edinburgh
A well-built site is valuable only when your target audience in Edinburgh and wider Scotland can find it. Our WordPress development projects include foundational SEO architecture from the first sketch:
- Technical SEO foundations. Clean URL structures, XML sitemaps, robots.txt configuration, canonical tags and proper heading hierarchy. We implement Schema.org structured data: LocalBusiness, Organization, Product, Service, FAQ and HowTo where they make sense.
- Local search optimisation. Google Business Profile integration, local schema with your Edinburgh address, NAP (Name, Address, Phone) consistency and pages prepared for regional queries, including Glasgow, Aberdeen and Dundee where the business genuinely serves clients across Scotland.
- Core Web Vitals as ranking signals. Google uses page experience metrics in page experience evaluation. We set performance budgets at project start and verify them against CrUX field data, not laboratory measurement alone.
- Content architecture. We structure pillar pages, supporting articles and internal linking so users reach the right topic quickly and search engines clearly understand the firm’s scope of expertise.
SEO is not a post-launch add-on. It is part of architectural decisions from the first sketch.
#Questions Edinburgh businesses ask us
Can you migrate our existing site? Yes. We handle migrations from any CMS to WordPress, from WordPress to headless architecture (Astro/Next.js) and between hosting providers. Every migration includes URL mapping, 301 redirect implementation and SEO monitoring for 90 days after migration, with Fringe or seasonal campaign calendars considered so migration does not land in a critical window.
Do you work with firms outside Edinburgh? Yes. We know the local context (Edinburgh Digital Hub, CodeBase, Quartermile fintech, Fringe season), but we work with clients across the United Kingdom and abroad. Many firms in Edinburgh serve clients in Glasgow, Aberdeen and Dundee without a separate page for each city.
How do you handle multilingual sites? We implement multilingual setups through WPML for traditional WordPress or native i18n routing for headless builds with Astro or Next.js. Each language version gets correct hreflang tags, localised URL slugs and independent SEO meta data. For firms serving the British and European markets post-Brexit, locale and hreflang configuration requires a separate architectural decision.
What does ongoing support include? After build completion the project can move to dedicated WordPress maintenance in Edinburgh: tested updates, backups, security and performance monitoring, and priority support with a documented SLA. Details are on the maintenance page, not in this development brief.
How does working with WPPoland differ from a local agency in Edinburgh? Primarily WordPress experience since 2007, our own technical stack on Astro and headless WordPress, and work on clear assumptions: scope, stages and responsibility are described before deployment. Pricing is individual and depends on scope, not a fixed price list.
If your firm already runs an online store or plans to build one, we have a dedicated page on WooCommerce developer in Edinburgh with GBP checkout, integration with British couriers and UK GDPR preparation. If the current site works and needs only ongoing care, tested updates and monitoring, see WordPress maintenance in Edinburgh or the WordPress website maintenance pillar. Both describe the same technical stack from an operational perspective, not a development one.
The full scope of WordPress development work (themes, plugins, Gutenberg, refactors) is described on the WordPress developer pillar. To discuss a brief, send a short description of your current situation through the contact form.
#Start your project in Edinburgh
If you want to discuss WordPress development, send a short description of your current situation, business goal and technical constraints. From that we review the configuration, identify risks and propose a practical action plan.
If you are planning a new build, Gutenberg migration or refactor of an inherited theme before Edinburgh Festival Fringe or a fintech product publication, start by writing down goals, constraints and current project state. Pricing is individual and depends on the scope of work.