your choice of platform is everything
A poor choice of website platform will set you on an irreversible path for many years which you will regret if not chosen wisely.
Why Kadence?
GOLD AWARD
Unleash the power of WordPress using Gutenberg
without the need for page builders
- lightning-fast performance
- separate mobile layouts
- dynamic custom field integration
- ecommerce enhanced (Shopkit)
It is the best of both worlds. Legacy or Old school WordPress is bloated using page managers. A coded language is often an ivory-tower website which only the developer will be able to modify and contain hidden long-term development costs.
I could try to persuade you otherwise … Laravel, a powerful server-side MVC PHP-framework. PHP is one of the world’s most popular programming languages for web development. It is both flexible and scalable…
To do so, would be in my interest …
No threat of an existential crisis such as third-party theme no longer updated, with page manager not opening after latest WordPress core update.
Ease of use
Intuitive workspace, no struggling with conflicting code.
Build speed, Performance
Very quick to build site, lightweight, nimble code which is cross browser friendly.
Design consistency
Pixel-perfect sections that co-exist with other blocks well, having no styling issues.
Plugin compatibility
Seamless integration and harmony, no conflicts or clashes as in most page builders.
Page load speed, Bloat factor
Feather-light, essentials only. No heavyweight scripts, no jQuery, no unnecessary styles and code.
Updates and maintenance
Automated, reliable updates, well-maintained.
Support, Community
Excellent support by a friendly, dedicated and knowledgeable team. A private Facebook group with expert designers to assist.
Cost
We have a Kadence lifetime license for unlimited sites which is cost effective and includes a host of plugins and code of an entire well-integrated ecosystem which is future proof with no annual subscriptions.
Future-proof Gutenberg compatibility
No issues with WordPress core updates, fast loads. Peace of mind.
WordPress still powers 40% of all sites on the web
WooCommerce is used on 30% of all ecommerce sites
(It is the most popular ecommerce platform in the world)

Once decided on WordPress at your platform, there are two roads available. A traditional page builder or the modern native block approach.
- not just a theme
Kadence is not just a “theme” or a “blocks” plugin. It’s an entire ECOSYSTEM of products to help build effective websites quickly.
All Kadence products perfectly optimized for lightning-fast speed, performance, and SEO. - niches
Kadence is particularly good and well-integrated for membership sites, eCommerce, online courses, business websites, non-profit and fundraising, blogs and podcasts. Furthermore, it meshes well with advanced custom fields (dynamic data).
- looking ahead
You don’t need to use bloated third-party page builders
WordPress has made it perfectly clear that the future of WordPress is all in blocks.
The future of WordPress is blocks. - very popular
A shift from popular page editors (Elementor) to Gutenberg | Kadence blocks as this approach is fast becoming very popular worldwide for a number of well-founded reasons including security, performance and offering different layouts for tablets and mobile devices.

While Elementor is used by over ten million+ websites, the ENTIRE WordPress community of developers and designers is committed to the new Gutenberg system. Both have their own strengths and cater to different user needs.
Modernization ?
adding to Kadence ecosystem
The Kadence ecosystem is designed for optimal performance.
Keep the number of third-party (non-Kadence) plugins required to a minimum *.
LESS IS MORE
- Full membership site stack+
(with AI chatbot and associated ticketing system, restricted content using tags, digital sovereignty)
Useful for restricting access to future content such as online workshops, online courses, etc.
Main recommended components of stack are: FluentCRM, wpFusion and ThriveDesk
(extensive integration) - Web 3 and WeB 4+
block chain, secure login, token gating and AI
* The technical reason to keep code core-centric: Kadence core plugins are well maintained and their code excludes jQuery which adversely affects performance. Security, performance, maintenance, php errors, etc. will develop over time with third-party code, especially if not well-maintained. Although corrections, refactoring can be done on a regular basis to rectify these issues, best practise dictates that third-party code be kept to a minimum from the beginning to avoid potential future issues. This is advice from a seasoned developer.
+ When your website needs go beyond the basics—whether for performance, SEO, or advanced functionality—we structure your project using multiple optimized backends while delivering a seamless, unified front-end experience.
Performance
The performance difference between Elementor and Kadence (particularly Kadence Blocks and Kadence Theme) is significant, especially if you’re focused on page speed, lightweight output, and core web vitals.
Here’s a detailed comparison:
⚡ Performance Comparison: Elementor vs Kadence
Feature | Elementor | Kadence (Theme + Blocks) |
|---|---|---|
Page Speed (Out of the Box) | ❌ Heavier due to extra DOM wrappers, CSS, JS | ✅ Lightweight, minimal extra markup |
Core Web Vitals | 🚫 Often struggles, especially with LCP and CLS | ✅ Generally passes without much tweaking |
DOM Output | ❌ Adds many wrapper | ✅ Clean, semantic HTML |
JavaScript/CSS Loading | ❌ Loads global scripts even when unused | ✅ Loads only what’s needed (modular) |
Asset Size | ❌ 500–700KB+ extra assets per page | ✅ Often <100KB extra assets per page |
FCP (First Contentful Paint) | ⚠️ Slower due to rendering overhead | ✅ Fast — optimized for speed |
Custom Code Control | ⚠️ Limited inside the visual builder | ✅ Cleaner integration with custom PHP/JS |
Integration with caching/CDN | ✅ Good, with plugins | ✅ Excellent, very compatible |
🧪 Test Case Summary (Real-world Example) – Simple Homepage Test:
Metric | Elementor | Kadence |
|---|---|---|
Page Load Time | ~3.5s | ~1.3s |
Total Requests | ~60 | ~25 |
Page Size | ~1.2MB | ~450KB |
Google PSI Score | 60–75 | 90–100 |
(Depending on hosting, images, caching, etc.)
Use Kadence if you want:
- A fast, lean WordPress site.
- Better Google PageSpeed/Core Web Vitals scores.
- More control over code, fewer dependencies.
- Gutenberg-native workflows.
Security
Here’s a detailed Elementor vs Kadence security comparison, focusing on architecture, update history, and real-world vulnerabilities:
🔐 Security Comparison: Elementor vs Kadence
Feature | Elementor | Kadence (Theme + Blocks) |
|---|---|---|
Plugin Complexity | ❌ Large, complex codebase (500K+ lines) | ✅ Lightweight, smaller attack surface |
Known Vulnerabilities | ⚠️ Multiple in past (XSS, privilege escalation) | ✅ Very few, mostly low severity |
Code Exposure | ❌ Many dynamic features (popup builder, theme builder, forms) increase exposure | ✅ Fewer dynamic features, more static output |
3rd-Party Addon Risks | ❌ High — many 3rd-party Elementor add-ons are poorly maintained | ✅ Lower — fewer Kadence add-ons exist |
Security Practices | ✅ Generally secure, with a professional team | ✅ Excellent — leaner and more secure-by-design |
Security Fix Frequency | ⚠️ Fixes are regular due to large surface | ✅ Rarely needs security patches |
Gutenberg Base | ❌ Not native — separate system | ✅ Native — built on secure Gutenberg base |
Granular Control (Roles) | ⚠️ Limited — more powerful, but can expose editors to risky tools | ✅ Fewer role-based concerns |
🧪 Real-World Security History
Elementor:
Multiple high-severity vulnerabilities in recent years:
🔸 March 2023: Authenticated arbitrary file upload (millions of sites affected).
🔸 May 2022: Privilege escalation via broken access control.
🔸 Repeated issues in Elementor Pro with form widget, custom code widget, etc.
Exposure often stems from powerful dynamic features and rapid update cycles.
Kadence:
No major vulnerabilities publicly disclosed.
Built closer to core WordPress standards (Gutenberg, Customizer).
Smaller codebase = less room for error.
Use Kadence if:
- You prioritize security, stability, and minimal risk.
- You want fewer vulnerabilities and a Gutenberg-aligned experience.
- You prefer fewer moving parts and a conservative, stable stack.
gradient_header
UI and UX excellence. Refactoring design. Mobile Ready.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Roboto 16px 300 caps
Roboto 44.8px 300
Button Roboto 16px 400 and text
TAKE THE NEXT STEP
MY PORTFOLIO
BRANDING & UI / UX
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
BRAND
CRAFTING SOMETHING UNIQUE
Timeless web development- authentic, natural, and beautifully crafted.
INTERNATIONAL
CONTACT
LET’S CHAT
I am based in the Port Alfred, South Africa and am available for web development internationally
email me: ([email protected]) WhatsApp: +27-83-463-7434 or complete the contact form, and we will get back to you within a day.
Heading
HeadingExcepteur sint occaecat cupidatat.
Heading
HeadingExcepteur sint occaecat cupidatat.
Heading
HeadingExcepteur sint occaecat cupidatat.
Heading
HeadingExcepteur sint occaecat cupidatat.
An enticing headline with a
gradient background
To change your gradient colors, go to the “Section” level holding this area and open the
“Custom CSS” section. Change the values in the “linear-gradient” line.
UI and UX excellence. Refactoring design. Mobile Ready.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Editorial Photography for Weddings, Brands & Creative People
The Art of Visual
Storytelling
BRAND
CAPTURING MOMENTS THAT MATTER
Timeless web development- authentic, natural, and beautifully crafted.
INTERNATIONAL
Enticing headline to
engage your readers
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.


CUSTOM CSS EXAMPLE
Lorem ipsum dolor
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat
CSS Classes and code
gradient-text
glow-text
typing-text
rainbow-hover
three-d-text
wavy-text
outline-text
neon-flicker
SCROLL-BASED TEXT EFFECTS
scroll-fade (Fade-in on Scroll) needs JS in footer (alt AOS plugin class: aos-fade-up )
slide-in-left (Slide-in from Left)
RESPONSIVE TEXT STYLES
responsive-text (Fluid Font Size)
media-responsive (Responsive Font with Media Queries)
TEXT BUTTON EFFECTS
shine-button (Button with Text Shine on Hover)
glow-button (Glow Button with Text Pulse)
underline-sweep (Underline Sweep on Hover)
IMAGE EFFECTS
img-zoom (Hover Zoom Effect)
img-grayscale (Grayscale on Hover)
underline-sweep (Underline Sweep on Hover)
img-overlay (Color Overlay)
img-glow (Image Glow on Hover)
img-blur (Blur on Hover)
img-rounded-shadow (Rounded with Shadow)
img-sepia (Sepia Effect)
img-bright (Brightness)
img-dark (Darkness)
img-contrast (Contrast)
HOVER & TRANSFORM EFFECTS
img-flip (Flip on Hover)
img-rotate (Rotate on Hover)
img-skew (Skew on Hover)
ANIMATED/TRANSITION EFFECTS
img-pulse (Pulse Animation)
img-fadein (Fade In on Load)
BORDERS, FRAMES & SHADOWS
img-border-hover (Border on Hover)
img-drop-shadow (Drop Shadow)
GRADIENT OVERLAY HOVER EFFECT
img-gradient-hover
/* Gradient Text */
.gradient-text {
background: linear-gradient(45deg, #ff6ec4, #7873f5);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
}
/* Glow Text */
.glow-text {
color: #fff;
text-shadow: 0 0 5px #fff, 0 0 10px #ff00ff, 0 0 20px #ff00ff;
}
/* 3D Text Shadow */
.text-3d {
color: #fff;
text-shadow: 1px 1px 0 #ccc, 2px 2px 0 #bbb, 3px 3px 0 #aaa;
}
/* Outlined Text */
.outline-text {
color: transparent;
-webkit-text-stroke: 1px #333;
}
/* Rainbow Hover Text */
.rainbow-hover {
background: linear-gradient(to right, red, orange, yellow, green, blue, indigo, violet);
background-size: 200%;
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
transition: background-position 0.6s ease;
}
.rainbow-hover:hover {
background-position: right;
}
/* Typing Animation / .typing-text { font-family: monospace; white-space: nowrap; overflow: hidden; width: 0; border-right: 2px solid; animation: typing 4s steps(30, end) forwards, blink 0.7s step-end infinite; } @keyframes typing { to { width: 100%; } } @keyframes blink { 50% { border-color: transparent; } } / Fluid Font Size */
.responsive-text {
font-size: clamp(1rem, 4vw, 3rem);
}
/* Media Query Font Sizes / .media-responsive { font-size: 18px; } @media (min-width: 768px) { .media-responsive { font-size: 24px; } } @media (min-width: 1200px) { .media-responsive { font-size: 32px; } } / Fade In */
.scroll-fade {
opacity: 0;
transform: translateY(30px);
transition: all 0.6s ease-out;
}
.scroll-fade.visible {
opacity: 1;
transform: translateY(0);
}
/* Slide In Left / .slide-in-left { opacity: 0; transform: translateX(-60px); transition: all 0.7s ease-out; } .slide-in-left.visible { opacity: 1; transform: translateX(0); } / Glowing Button */
.glow-button {
background-color: #111;
color: #0f0;
padding: 10px 20px;
border: none;
border-radius: 6px;
box-shadow: 0 0 10px #0f0;
text-shadow: 0 0 5px #0f0;
animation: pulseGlow 2s infinite alternate;
}
@keyframes pulseGlow {
from { box-shadow: 0 0 10px #0f0; }
to { box-shadow: 0 0 25px #0f0; }
}
/* Shine Hover Button */
.shine-button {
position: relative;
display: inline-block;
color: #fff;
background: #333;
padding: 12px 24px;
overflow: hidden;
border-radius: 4px;
transition: background 0.3s;
}
.shine-button::before {
content: ”;
position: absolute;
top: 0;
left: -75%;
width: 50%;
height: 100%;
background: linear-gradient(120deg, transparent, rgba(255,255,255,0.5), transparent);
transform: skewX(-20deg);
}
.shine-button:hover::before {
left: 125%;
transition: left 0.75s;
}
/* Underline Hover Effect */
.underline-hover {
position: relative;
display: inline-block;
color: #000;
text-decoration: none;
}
.underline-hover::after {
content: ”;
position: absolute;
width: 100%;
height: 2px;
left: 0;
bottom: 0;
background-color: #ff4081;
transform: scaleX(0);
transform-origin: bottom right;
transition: transform 0.3s ease-out;
}
.underline-hover:hover::after {
transform: scaleX(1);
transform-origin: bottom left;
}
.img-zoom {
transition: transform 0.3s ease;
}
.img-zoom:hover {
transform: scale(1.1);
}
.img-grayscale {
filter: grayscale(100%);
transition: filter 0.3s ease;
}
.img-grayscale:hover {
filter: grayscale(0%);
}
.img-overlay {
position: relative;
overflow: hidden;
}
.img-overlay::after {
content: "";
position: absolute;
top: 0; left: 0;
width: 100%; height: 100%;
background: rgba(0, 0, 0, 0.4);
transition: background 0.3s ease;
}
.img-overlay:hover::after {
background: rgba(0, 0, 0, 0.1);
}
.img-glow {
transition: box-shadow 0.3s ease;
}
.img-glow:hover {
box-shadow: 0 0 20px rgba(255, 255, 255, 0.8);
}
.img-blur {
transition: filter 0.3s ease;
}
.img-blur:hover {
filter: blur(2px);
}
.img-rounded-shadow {
border-radius: 12px;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
}
.img-sepia {
filter: sepia(100%);
}
.img-bright {
filter: brightness(1.4);
}
.img-dark {
filter: brightness(0.6);
}
.img-contrast {
filter: contrast(150%);
}
.img-flip {
transition: transform 0.6s;
transform-style: preserve-3d;
}
.img-flip:hover {
transform: rotateY(180deg);
}
.img-rotate {
transition: transform 0.4s ease;
}
.img-rotate:hover {
transform: rotate(10deg);
}
.img-skew {
transition: transform 0.4s ease;
}
.img-skew:hover {
transform: skewX(10deg);
}
@keyframes pulse {
0% { transform: scale(1); }
50% { transform: scale(1.05); }
100% { transform: scale(1); }
}
.img-pulse {
animation: pulse 2s infinite;
}
.img-fadein {
opacity: 0;
animation: fadeIn 1s ease-in forwards;
}
@keyframes fadeIn {
to { opacity: 1; }
}
.img-border-hover {
transition: border 0.3s ease;
}
.img-border-hover:hover {
border: 4px solid #007BFF;
}
.img-drop-shadow {
filter: drop-shadow(0 5px 5px rgba(0,0,0,0.3));
}
.img-gradient-hover {
position: relative;
overflow: hidden;
}
.img-gradient-hover::after {
content: "";
position: absolute;
inset: 0;
background: linear-gradient(to top, rgba(0,0,0,0.5), transparent);
opacity: 0;
transition: opacity 0.3s ease;
}
.img-gradient-hover:hover::after {
opacity: 1;
}
.img-card {
position: relative;
overflow: hidden;
width: 300px;
height: 200px;
border-radius: 12px;
}
.img-card img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
transition: transform 0.4s ease;
}
Custom PHP code, plugins, and API integrations allow us to extend and enhance your WordPress site far beyond what’s possible with standard tools. We can add tailored features, connect your site to third-party services, and build advanced content blocks using the modern Gutenberg editor. While Gutenberg is powered by JavaScript, PHP still plays a key role behind the scenes—helping us register custom blocks, manage data, and ensure everything works smoothly. This combination gives you a faster, more flexible website that’s built specifically around your business needs.
Example of a PHP code snippet (API integration) to display exchange rate:
<?php
// [exchange_rate currency="USD"]
add_shortcode('exchange_rate', function($atts) {
$atts = shortcode_atts(['currency' => 'USD'], $atts);
$url = "https://api.exchangerate-api.com/v4/latest/{$atts['currency']}";
$response = wp_remote_get($url);
if (is_wp_error($response)) return 'Error fetching rate';
$data = json_decode(wp_remote_retrieve_body($response), true);
$rate = $data['rates']['ZAR'] ?? null;
if (!$rate) return 'Rate not available';
return "1 {$atts['currency']} = " . number_format($rate, 2) . " ZAR";
});
or as a plugin:
Folder Structure:
exchange-rate-php/
│
├── exchange-rate-php.php
exchange-rate-php.php
<?php
/**
* Plugin Name: Exchange Rate Block (PHP)
* Description: A shortcode-based plugin that shows the USD to ZAR exchange rate.
* Version: 1.0
* Author: Your Name
*/
add_shortcode('exchange_rate', function($atts) {
$atts = shortcode_atts(['currency' => 'USD'], $atts);
$url = "https://api.exchangerate-api.com/v4/latest/{$atts['currency']}";
$response = wp_remote_get($url);
if (is_wp_error($response)) return 'Error fetching rate';
$data = json_decode(wp_remote_retrieve_body($response), true);
$rate = $data['rates']['ZAR'] ?? null;
if (!$rate) return 'Rate not available';
return "<p>1 {$atts['currency']} = " . number_format($rate, 2) . " ZAR</p>";
});
Gutenberg | JavaScript First
Editor UI: Completely written in React (JSX).
Block Development: Done using modern JavaScript (ES6+), JSK, and React.
Custom block plugins: Often built with JS build tools.
So, is this a shift from PHP to JavaScript?
Is WordPress abandoning PHP?
No. PHP is still essential.
Is Gutenberg built primarily with JavaScript/React?
Yes.
Do developers now need to learn JavaScript to build for Gutenberg?
Absolutely – especially React and ESNext.
Is this a full rewrite of WordPress in JavaScript?
No. It is a layered evolution, not a full rewrite.
Classic WordPress: PHP-driven, procedural templates, shortcodes.
Modern WordPress with Gutenberg: JavaScript-first editing (React), PHP backend, modular block architecture.
So yes – Gutenberg is a shift from PHP to JavaScript in the editor layer, but PHP remains deeply. It’s similar to the popular PHP framework Laravel, which enables PHP developers to use modern JavaScript on the frontend.
Page builders have served as a bridge between classic WordPress and modern WordPress, helping users overcome the limitations of the old editor when designing websites. Today, the native Gutenberg editor—built with a JavaScript-first approach—offers a more powerful and flexible experience, especially when extended by Kadence.
A React-based editable block in WordPress (typically built with Gutenberg’s block editor) offers much more than just live data updates. Here’s a detailed comparison of what React-based blocks can do versus PHP-based blocks:
Interactivity & Live Preview (in editor)
React (JSX/JavaScript-based): Allows real-time interaction while editing. For example, dropdowns, sliders, toggles, etc., update instantly in the editor (like a web app).
PHP: Only renders on the front-end or on saving. Editor view is static or requires serverSideRender for updates.
True WYSIWYG (What You See Is What You Get)
React: The block looks the same in the editor as on the front-end (when coded properly).
PHP: Often shows a placeholder or simplified version in the editor (e.g., shortcodes or static markup), especially in Classic Editor.
Dynamic Client-side Logic
React: Can pull live data from REST APIs, manipulate it, and update the block instantly in the editor (without reloading).
PHP: Can fetch data from APIs too, but only during render (e.g., on page load or when saving content). No dynamic editor behavior unless you mix it with JS manually.
Reusable UI Controls & Gutenberg Integration
React: Uses WordPress’s own React-based component library — buttons, color pickers, toggles, media uploaders, etc.
PHP: Cannot use these directly. You’d need to build your own JS UI or rely on meta boxes, shortcodes, or Advanced Custom Fields (ACF).
Editor Performance & Extensibility
React: Blocks are modular, easier to extend with InnerBlocks, reusable components, and state management.
PHP: Logic is tightly coupled to rendering, harder to scale or reuse in the modern block editor.
Better UX for End Users
React: Enables non-developers to visually compose and configure complex blocks easily, like charts, forms, live previews, etc.
PHP: Better for static content or server-rendered logic, but not ideal for interactive editing.
Backward Compatibility / Simplicity
PHP: Still useful for simple or server-rendered blocks, or when you want to ensure compatibility with classic themes or non-block environments.
React: Best suited for fully block-based (FSE) or modern WordPress themes.
So, does React do more than just live data?
Absolutely. It powers the full visual, interactive editing experience of the modern WordPress block editor, and is essential for building blocks that are:
User-friendly
Dynamic
Reusable
Consistent with Gutenberg standards
Side-by-Side Comparison
Feature | React Block | PHP Block |
|---|---|---|
Live Data in Editor | Yes | No |
Interactive UI (dropdowns etc.) | Yes | No |
Easy for users (WYSIWYG) | Yes | Limited |
Renders on front-end | Yes | Yes |
Complex UI Support | Yes (sliders, toggles) | Difficult |
Server Load | Higher (more JS) | Low |
Dev Complexity | Higher | Simpler |
So When to Use Which?
Use Case | Recommended Block Type |
|---|---|
Static content, low complexity | PHP |
Dynamic content, real-time API, live previews | React |
Reusable block for non-tech users | React |
Internal tools or admin-only UI | React (or hybrid) |
Legacy theme or shortcode support | PHP |
Example of a React-Based Gutenberg Exchange Rate Block:
Folder Structure:
exchange-rate-block/
│
├── exchange-rate-block.php
├── block/
│ ├── index.js
│ └── block.json
exchange-rate-block.php
<?php
/**
* Plugin Name: Exchange Rate Block (React)
* Description: A Gutenberg block that shows live exchange rate with dropdown.
* Version: 1.0
* Author: Your Name
*/
function erb_register_block() {
register_block_type(__DIR__ . '/block');
}
add_action('init', 'erb_register_block');
block/block.json
{
"apiVersion": 2,
"name": "erb/exchange-rate",
"title": "Live Exchange Rate",
"category": "widgets",
"icon": "chart-line",
"editorScript": "file:./index.js",
"attributes": {
"currency": {
"type": "string",
"default": "USD"
}
}
}
block/index.js (React)
import { registerBlockType } from '@wordpress/blocks';
import { useState, useEffect } from '@wordpress/element';
import { SelectControl } from '@wordpress/components';
registerBlockType('erb/exchange-rate', {
edit({ attributes, setAttributes }) {
const [rate, setRate] = useState(null);
useEffect(() => {
fetch(`https://api.exchangerate-api.com/v4/latest/${attributes.currency}`)
.then(res => res.json())
.then(data => setRate(data.rates['ZAR']))
.catch(() => setRate(null));
}, [attributes.currency]);
return (
<>
<SelectControl
label="Base Currency"
value={attributes.currency}
options={[
{ label: 'USD', value: 'USD' },
{ label: 'EUR', value: 'EUR' },
{ label: 'GBP', value: 'GBP' },
]}
onChange={(val) => setAttributes({ currency: val })}
/>
<p>
1 {attributes.currency} = {rate ? rate.toFixed(2) : '...'} ZAR
</p>
</>
);
},
save() {
return null; // Render dynamically or in frontend JS
}
});
AI Integration | AI Chatbots and more
The modern web landscape is evolving rapidly, driven by innovations such as the Semantic Web, AI, Progressive Web Apps, blockchain, and decentralized technologies, all converging into what’s now referred to as Web 3.0 and Web 4.0. Institutions are leveraging these technologies to enhance user experience, personalization, data integrity, and connectivity. WordPress, the world’s most popular CMS powering over 40% of websites, is uniquely positioned to adapt and integrate these capabilities, thanks to its vast plugin ecosystem and ease of implementation. Contrary to popular belief, blockchain doesn’t replace traditional server-based frameworks like WordPress but complements them—ideal for niche applications like digital credentials, decentralized finance, and secure identity verification. While emerging technologies like AI chatbots, push notifications, edge computing, and machine learning-based content personalization are reshaping engagement, foundational issues such as secure email delivery, user authentication, server reliability, and outdated themes must also be addressed. With tools like WP Fusion, ActiveCampaign, LearnDash, WP ERP, and ThriveDesk, WordPress can serve as a powerful hub that integrates CRM, LMS, e-commerce, ERP, and support systems, enabling institutions to modernize their digital presence affordably and efficiently without requiring deep technical expertise or custom development from scratch.
AI Chatbot example: Botpress active on Development platform page (see floating chat icon on bottom-right corner of linked page)
Progressive Web Apps (PWA) is a new technology that combines the best of mobile web and the best of mobile apps to create a superior mobile web experience. They are installed on the phone like a normal app (web app) and can be accessed from the home screen. Users can come back to your website by launching the app from their home screen and interact with your website through an app-like interface. Your return visitors will experience almost-instant loading times and enjoy the great performance benefits of your PWA! In other words, this can completely replace mobile app development. Example: I recently created a local business directory using Kadence and a free progressive web app (PWA) plugin, giving our community its first mobile directory with free business listings. By leveraging a PWA—designed to feel like a native Android or iOS app—we avoided the cost and complexity of separate app development and app store fees.
Kadence AI tools are designed to streamline website creation by intelligently assisting users with content generation, layout suggestions, and block configurations directly within the WordPress editor. Integrated into the Kadence Blocks plugin, these tools use AI to help generate headlines, paragraphs, and even full sections based on user prompts or existing content. This allows users—especially non-designers and non-developers—to build professional-looking pages faster, with tailored messaging and optimized structure. Kadence AI also enhances efficiency by offering smart layout options and style presets that align with your brand, significantly reducing the time needed to design and publish content-rich pages.
Yes, there are specific cases when I would recommend Elementor* …. a property website for an estate agency with a predesigned theme using Elementor. Elementor has an established and a much larger selection of marketplace themes than Kadence. These can be edited and modified, saving on development costs.
* To keep code core-centric: Elementor Pro and Elements Kit Pro need to be used extensively.
Although legacy (pre-Gutenberg) or old school, Elementor has evolved significantly and has a wide user and support base.
Laravel, a coded platform, is also preferred in certain instances, especially web applications. Laravel provides powerful blade templating, an Eloquent ORM that allows complete control over all aspects of a database-driven website. Authentication scaffolding. It even allows API’s to be developed for mobile devices. It gives you much more flexibility than using a typical WordPress template.
Agency license
We have a lifetime WordPress Kadence agency license which allows us to use Kadence on your websites without any additional Kadence licensing costs as long as we are regularly managing or developing your website. We are also investing heavily in the Kadence platform with time and effort as we strongly feel this is best platform for most of our clients.
Long-term consideration
In the long term, Kadence leads to 10% developer, 90% inhouse.
Other coded platforms:
In the long term, 90% developer, 10% inhouse due to technical constraints.
In other words, Kadence will pay off big time in the long term cost wise.
As a developer, I should not be giving you this advice …
Some of the coded technologies that
we have worked with in the past:




















