9  Extending Platforms

9.1 The Concept First

In Chapter 8, you learned that WordPress’s value lies in its ecosystem. Now we’ll learn to extend WordPress professionally—using plugins wisely, customising safely, and making business decisions about when to build versus when to buy.

Here’s the tension: plugins make WordPress powerful, but plugins also create risk. Every plugin you add:

  • Depends on someone else maintaining it
  • Could conflict with other plugins
  • Might introduce security vulnerabilities
  • Adds complexity to troubleshoot

Professional WordPress development isn’t about installing the most plugins—it’s about installing the right plugins and knowing when custom development makes more sense.

9.2 Understanding Through Build vs Buy

Every feature request presents a choice:

Buy (Use existing plugin):

  • Faster to implement
  • Someone else maintains it
  • Battle-tested by thousands of users
  • May not fit exact requirements

Build (Custom development):

  • Exact fit for requirements
  • You control maintenance
  • No dependency on external developers
  • Higher upfront cost

Neither is always better. The professional skill is evaluating trade-offs.

Consider a business that needs a booking system:

Factor Plugin (e.g., Bookly) Custom Build
Implementation time Hours Weeks
Upfront cost $0-300 $5,000-20,000
Fits requirements 80-90% 100%
Ongoing updates Plugin developer You
Customisation Limited Unlimited
Risk of abandonment Medium None (you own it)

For most small businesses, the plugin wins. For a booking-centric business with unique requirements, custom might justify its cost.

TipThe 80% Rule

If an existing solution meets 80% of requirements, adapting workflows to fit the tool often costs less than building the remaining 20% custom. Perfect fit isn’t always worth the price.

9.3 Discovering Extensions with Your AI Partner

Exploration 1: Plugin Evaluation Framework

When multiple plugins solve the same problem, how do you choose?

Ask your AI:
I need a contact form plugin for a WordPress business site. Create
a framework for evaluating options. What criteria matter, and how
would I compare Contact Form 7, WPForms, and Gravity Forms?

Your evaluation framework should include:

  • Feature match to requirements
  • Ease of use (for you and the client)
  • Performance impact
  • Price (free vs. premium features)
  • Support and documentation
  • Update frequency and developer reputation
  • Integration with other tools
Continue the conversation:
What questions should I ask the client before recommending a contact
form plugin? What requirements might change my recommendation?

Exploration 2: Build vs Buy Decision

Let’s work through a realistic scenario:

Ask your AI:
A client runs a yoga studio and needs an online booking system.
Students should book classes, see instructor schedules, and manage
their memberships. Walk me through the decision process: should we
use an existing plugin like Bookly, integrate a third-party service
like Mindbody, or build custom? What factors matter most?

This conversation should reveal:

  • Volume of bookings (justifies complexity)
  • Unique requirements (standard vs. unusual workflows)
  • Integration needs (payment, email, calendars)
  • Budget reality (short-term vs. long-term costs)
  • Client technical capacity (who maintains this?)
Continue the conversation:
What if the client says "I want exactly what my competitor has but
for half the price"? How do I manage expectations?

Exploration 3: Technical Debt

Plugins have hidden costs:

Ask your AI:
What is "plugin bloat" in WordPress? How do too many plugins create
technical debt? Give me a concrete example of how this affects a
real site.

Technical debt accumulates when:

  • Plugins conflict with each other
  • Updates break functionality
  • Performance degrades
  • Security vulnerabilities compound
  • Nobody understands all the pieces
Continue the conversation:
If I inherited a WordPress site with 47 plugins, how would I audit
which ones are actually needed? What's a safe process?

Exploration 4: AI-Assisted WordPress Development

AI is particularly effective at writing WordPress PHP code:

Ask your AI:
I want to add a feature to my WordPress site that displays "This
post was updated X days ago" at the top of posts that have been
modified in the last 30 days. Walk me through how to implement
this with a filter in my child theme's functions.php. Explain
each part of the code.

This conversation should demonstrate:

  • How to structure requests for WordPress PHP code
  • The importance of asking for explanations, not just code
  • How filters modify content in WordPress
  • Testing approach for custom PHP
Continue the conversation:
Now I want to make this a simple plugin instead of putting it in
functions.php. What changes are needed? What are the advantages
of a plugin over functions.php for this feature?

9.4 From Concept to Code

Let’s learn to extend WordPress professionally.

Installing and Managing Plugins

Installing from the repository:

  1. Plugins → Add New
  2. Search for the plugin
  3. Click “Install Now”
  4. Click “Activate”

Installing premium plugins:

  1. Download the .zip file from the vendor
  2. Plugins → Add New → Upload Plugin
  3. Select the .zip file
  4. Install and activate

Managing plugins:

  • Deactivate plugins you’re not using (don’t just leave them inactive—delete them)
  • Update plugins regularly (but test first on staging)
  • Document why each plugin is installed
  • Review plugins quarterly—needs change

Essential Plugin Categories

Most business WordPress sites need plugins in these categories:

Security:

  • Wordfence or Sucuri: Firewall, malware scanning, login protection
  • Essential—WordPress is a common target

Backup:

  • UpdraftPlus: Scheduled backups to cloud storage
  • Non-negotiable—databases get corrupted, hosts fail

Performance:

  • WP Super Cache or W3 Total Cache: Page caching
  • Smush or ShortPixel: Image optimisation
  • Noticeable impact on user experience and SEO

SEO:

  • Yoast SEO or RankMath: Meta tags, sitemaps, readability
  • Important for discoverability

Forms:

  • WPForms, Gravity Forms, or Contact Form 7
  • Nearly every site needs contact forms
Ask your AI:
For a small business WordPress site, what's the minimum set of
plugins I should consider essential? What does each one protect
against or enable?

Evaluating Plugin Quality

Before installing any plugin, check:

In the repository listing:

  • Last updated (within 3-6 months)
  • Active installations (higher = more tested)
  • WordPress version compatibility
  • Star rating and reviews (read the negative ones)
  • Support forum activity (does developer respond?)

In reviews, watch for:

  • Security issues mentioned
  • Conflicts with common plugins/themes
  • Broken updates
  • Abandoned development
  • Excessive resource usage

Test before deploying:

  • Install on a staging site first
  • Test core functionality
  • Check for conflicts with existing plugins
  • Monitor performance impact

Plugin Conflicts

Plugins can conflict because they:

  • Modify the same functionality
  • Use incompatible JavaScript libraries
  • Compete for database resources
  • Override the same hooks

Diagnosing conflicts:

  1. Note the symptoms (error messages, broken features)
  2. Deactivate all plugins
  3. Reactivate one by one, testing each time
  4. Identify the conflicting combination
  5. Decide: replace one, find alternative, or contact support

Preventing conflicts:

  • Minimise plugin count (each one adds risk)
  • Choose well-maintained plugins
  • Test updates on staging first
  • Keep WordPress core updated

Child Themes: Safe Customisation

If you modify a theme directly, your changes disappear when the theme updates. Child themes solve this.

A child theme:

  • Inherits everything from the parent theme
  • Lets you override specific files
  • Preserves your changes through parent theme updates

Creating a child theme:

  1. Create a folder in /wp-content/themes/ named {parent-theme}-child
  2. Create style.css with required headers:
/*
 Theme Name: Twenty Twenty-Four Child
 Template: twentytwentyfour
*/

/* Your custom CSS goes here */
  1. Create functions.php to enqueue parent styles:
<?php
function child_theme_enqueue_styles() {
    wp_enqueue_style(
        'parent-style',
        get_template_directory_uri() . '/style.css'
    );
}
add_action('wp_enqueue_scripts', 'child_theme_enqueue_styles');
  1. Activate the child theme in Appearance → Themes

Now any CSS you add to the child’s style.css applies on top of the parent, and any template files you create in the child override the parent’s versions.

Ask your AI:
I want to change the footer on my WordPress site to include
additional business information. Walk me through doing this
properly with a child theme, so my changes survive theme updates.

Functions.php: Small Customisations

For small code customisations, the child theme’s functions.php is appropriate:

<?php
// Remove WordPress version from head (minor security)
remove_action('wp_head', 'wp_generator');

// Change excerpt length
function custom_excerpt_length($length) {
    return 25; // Words
}
add_filter('excerpt_length', 'custom_excerpt_length');

// Add custom image size
add_image_size('featured-thumb', 400, 300, true);
Warningfunctions.php Caution

Syntax errors in functions.php can break your entire site. Test on staging, and consider a plugin like Code Snippets that isolates code pieces and lets you disable them if they cause problems.

PHP Fundamentals for WordPress

WordPress is built on PHP. While you can accomplish a lot without writing PHP, understanding the basics opens up powerful customisation options—and AI is excellent at helping you write WordPress PHP code.

PHP basics:

PHP code runs on the server and generates HTML sent to the browser. PHP files mix HTML and PHP:

<?php
// PHP code goes between these tags
$site_name = "My Business";
$current_year = date('Y');
?>

<!DOCTYPE html>
<html>
<head>
    <title><?php echo $site_name; ?></title>
</head>
<body>
    <footer>
        <p>&copy; <?php echo $current_year; ?> <?php echo $site_name; ?></p>
    </footer>
</body>
</html>

Key PHP concepts:

<?php
// Variables start with $
$price = 29.99;
$product_name = "Widget";
$is_available = true;

// Arrays hold multiple values
$categories = ['Electronics', 'Home', 'Garden'];
$product = [
    'name' => 'Widget',
    'price' => 29.99,
    'stock' => 15
];

// Access array values
echo $categories[0];        // Electronics
echo $product['price'];     // 29.99

// Conditionals
if ($product['stock'] > 0) {
    echo "In stock";
} else {
    echo "Out of stock";
}

// Loops
foreach ($categories as $category) {
    echo "<li>$category</li>";
}

// Functions
function format_price($amount) {
    return '$' . number_format($amount, 2);
}
echo format_price(29.99);  // $29.99

WordPress Template Tags

WordPress provides functions (called “template tags”) that output common elements:

<?php
// Site information
bloginfo('name');           // Site title
bloginfo('description');    // Site tagline
home_url();                 // Home page URL
get_template_directory_uri(); // Theme folder URL

// Current page/post
the_title();               // Post/page title
the_content();             // Post/page content
the_excerpt();             // Post excerpt
the_permalink();           // URL to current post
the_post_thumbnail();      // Featured image

// Conditional checks
if (is_home()) { }         // Is this the blog page?
if (is_single()) { }       // Is this a single post?
if (is_page('about')) { }  // Is this the About page?
if (is_logged_in()) { }    // Is user logged in?

The WordPress Loop

The Loop is how WordPress displays posts. It’s the core pattern you’ll see in every theme:

<?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
        <article>
            <h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
            <div class="meta">
                Posted on <?php the_date(); ?> by <?php the_author(); ?>
            </div>
            <div class="content">
                <?php the_excerpt(); ?>
            </div>
            <a href="<?php the_permalink(); ?>">Read more</a>
        </article>
    <?php endwhile; ?>
<?php else : ?>
    <p>No posts found.</p>
<?php endif; ?>

Understanding this pattern helps you customise how posts display.

Hooks: Actions and Filters

WordPress uses “hooks” to let you modify behaviour without editing core files. There are two types:

Actions – Do something at a specific point:

<?php
// Add code to the <head> section
function add_custom_meta() {
    echo '<meta name="author" content="My Company">';
}
add_action('wp_head', 'add_custom_meta');

// Add code to the footer
function add_footer_script() {
    echo '<script>console.log("Page loaded");</script>';
}
add_action('wp_footer', 'add_footer_script');

// Do something when a post is published
function notify_on_publish($post_id) {
    // Send notification, update external system, etc.
}
add_action('publish_post', 'notify_on_publish');

Filters – Modify data before it’s used:

<?php
// Modify the excerpt length
function custom_excerpt_length($length) {
    return 30; // 30 words instead of default 55
}
add_filter('excerpt_length', 'custom_excerpt_length');

// Add content after every post
function add_author_bio($content) {
    if (is_single()) {
        $content .= '<div class="author-bio">Written by ' . get_the_author() . '</div>';
    }
    return $content;
}
add_filter('the_content', 'add_author_bio');

// Modify the page title
function custom_title($title) {
    return $title . ' | My Business';
}
add_filter('the_title', 'custom_title');
Ask your AI:
I want to add a "Last updated" date below each blog post title on
my WordPress site. Walk me through how to do this with a filter in
my child theme's functions.php.

Building a Simple Plugin with AI

AI excels at writing WordPress plugins. Here’s how to approach it:

Example: A plugin to display business hours

Ask your AI:
I need a WordPress plugin that:
1. Adds a settings page where I can enter business hours for each day
2. Provides a shortcode [business_hours] to display the hours
3. Shows "Open" or "Closed" based on current time

Create this plugin with clear comments explaining each part.

AI might generate something like:

<?php
/**
 * Plugin Name: Simple Business Hours
 * Description: Display business hours with a shortcode
 * Version: 1.0
 * Author: Your Name
 */

// Prevent direct access
if (!defined('ABSPATH')) {
    exit;
}

// Add settings page to admin menu
function sbh_add_menu() {
    add_options_page(
        'Business Hours',           // Page title
        'Business Hours',           // Menu title
        'manage_options',           // Capability required
        'business-hours',           // Menu slug
        'sbh_settings_page'         // Function to display page
    );
}
add_action('admin_menu', 'sbh_add_menu');

// Display settings page
function sbh_settings_page() {
    ?>
    <div class="wrap">
        <h1>Business Hours Settings</h1>
        <form method="post" action="options.php">
            <?php
            settings_fields('sbh_settings');
            do_settings_sections('business-hours');
            submit_button();
            ?>
        </form>
    </div>
    <?php
}

// Register settings
function sbh_register_settings() {
    register_setting('sbh_settings', 'sbh_hours');

    add_settings_section(
        'sbh_main_section',
        'Weekly Hours',
        null,
        'business-hours'
    );

    $days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'];

    foreach ($days as $day) {
        add_settings_field(
            'sbh_' . strtolower($day),
            $day,
            'sbh_day_field',
            'business-hours',
            'sbh_main_section',
            ['day' => strtolower($day)]
        );
    }
}
add_action('admin_init', 'sbh_register_settings');

// Render day input field
function sbh_day_field($args) {
    $hours = get_option('sbh_hours', []);
    $day = $args['day'];
    $value = isset($hours[$day]) ? $hours[$day] : '9:00 AM - 5:00 PM';
    echo '<input type="text" name="sbh_hours[' . $day . ']" value="' . esc_attr($value) . '" placeholder="e.g., 9:00 AM - 5:00 PM or Closed">';
}

// Shortcode to display hours
function sbh_display_hours($atts) {
    $hours = get_option('sbh_hours', []);
    $days = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday'];

    $output = '<div class="business-hours">';
    $output .= '<table>';

    foreach ($days as $day) {
        $display_hours = isset($hours[$day]) ? $hours[$day] : 'Not set';
        $output .= '<tr>';
        $output .= '<td><strong>' . ucfirst($day) . '</strong></td>';
        $output .= '<td>' . esc_html($display_hours) . '</td>';
        $output .= '</tr>';
    }

    $output .= '</table>';
    $output .= '</div>';

    return $output;
}
add_shortcode('business_hours', 'sbh_display_hours');

To install this plugin:

  1. Create a folder simple-business-hours in /wp-content/plugins/
  2. Save the code as simple-business-hours.php in that folder
  3. Activate in Plugins → Installed Plugins
  4. Configure in Settings → Business Hours
  5. Use [business_hours] shortcode in any page
TipAI Plugin Development

When asking AI to write WordPress plugins: 1. Be specific about functionality 2. Request comments explaining the code 3. Test thoroughly on a staging site 4. Review the code—understand what it does before installing 5. Ask AI to explain any parts you don’t understand

Customising Theme Templates

You can override any parent theme template by copying it to your child theme and modifying it.

Common templates to customise:

Template Purpose
header.php Site header, navigation
footer.php Site footer
single.php Single blog post
page.php Individual pages
archive.php Post listing pages
functions.php Theme functions

Example: Custom single post template

Copy single.php from parent theme to child theme, then modify:

<?php get_header(); ?>

<main class="site-content">
    <?php while (have_posts()) : the_post(); ?>
        <article class="post">
            <?php if (has_post_thumbnail()) : ?>
                <div class="featured-image">
                    <?php the_post_thumbnail('large'); ?>
                </div>
            <?php endif; ?>

            <header>
                <h1><?php the_title(); ?></h1>
                <p class="meta">
                    Published <?php echo get_the_date(); ?>
                    in <?php the_category(', '); ?>
                </p>
            </header>

            <div class="content">
                <?php the_content(); ?>
            </div>

            <footer class="post-footer">
                <?php the_tags('<p class="tags">Tags: ', ', ', '</p>'); ?>

                <div class="author-box">
                    <?php echo get_avatar(get_the_author_meta('ID'), 64); ?>
                    <div class="author-info">
                        <h4><?php the_author(); ?></h4>
                        <p><?php the_author_meta('description'); ?></p>
                    </div>
                </div>
            </footer>
        </article>

        <?php comments_template(); ?>

    <?php endwhile; ?>
</main>

<?php get_sidebar(); ?>
<?php get_footer(); ?>
Ask your AI:
I want to modify the archive page template in my child theme to
display posts in a grid layout instead of a list. Show me how
to create a custom archive.php that uses CSS Grid and displays
featured images with post titles.

When to Build Custom

Consider custom development when:

  • No plugin meets the core requirement
  • Plugins would require heavy modification anyway
  • The feature is central to the business model
  • Security or performance requirements are extreme
  • Long-term cost of plugin licensing exceeds development

Even then, consider:

  • A small custom plugin (focused, maintainable)
  • Modifying an existing plugin (with a child plugin approach)
  • Combining simpler plugins with custom glue code

Full custom rarely means starting from zero.

9.5 Building Your Mental Model

The Extension Pyramid

                   ┌───────────────┐
                   │ Custom Code   │  (Last resort)
                   ├───────────────┤
                │  │ Child Themes   │  (Theme customisation)
              │    ├───────────────┤
            │      │ Premium Plugins│  (Paid, supported)
          │        ├───────────────┤
        │          │ Free Plugins   │  (Widely tested)
      │            ├───────────────┤
    │              │ WordPress Core │  (Foundation)
────────────────────────────────────────

Start from the bottom: can WordPress core do it? Can a well-established free plugin do it? Only climb the pyramid when lower levels don’t work.

The Dependency Chain

Every plugin creates a dependency:

Your Site
  └── Depends on Plugin A
        └── Depends on Plugin A's Developer
              └── Depends on Developer's continued interest
                    └── Depends on WordPress compatibility

More plugins = more dependencies = more things that can break.

The True Cost Formula

When evaluating options:

True Cost = Upfront Cost + (Yearly Maintenance × Years) + Risk Cost

Plugin:
- Upfront: $0-300 (purchase/license)
- Maintenance: $50-100/year (updates, support subscription)
- Risk: plugin abandonment, security issues

Custom:
- Upfront: $5,000-20,000 (development)
- Maintenance: $500-2,000/year (updates, hosting, developer retainer)
- Risk: developer availability, scope creep

Over 5 years, the math often favours plugins for standard features.

9.6 Business Applications

ROI Calculation

Present plugin decisions to clients in business terms:

“A custom booking system would cost $15,000 to build and $2,000/year to maintain. The plugin costs $200/year. Over 5 years:

  • Custom: $15,000 + ($2,000 × 5) = $25,000
  • Plugin: $200 × 5 = $1,000

The plugin doesn’t do everything you want, but is that extra functionality worth $24,000?”

Risk Communication

Help clients understand risks:

“This plugin has 500,000 active installations and is updated monthly. It’s well-maintained. But if the developer stops working on it, we’d need to find an alternative. That’s a risk with any plugin, which is why we document everything and maintain backups.”

Managing Expectations

When clients want custom features:

“We can definitely build that custom. But let me show you how three existing plugins handle similar needs. If any of these work for you, you’ll save significant money and get something battle-tested by thousands of users.”

This positions you as an advisor, not just an implementer.

Security Responsibility

Plugins are the most common WordPress security vulnerability. Your role:

  • Evaluate plugin security before installation
  • Keep plugins updated
  • Monitor for vulnerability announcements
  • Have a response plan if something is compromised
  • Document which plugins are installed and why
NoteULO Connection

This develops ULO 4 (making and defending technology choices) and ULO 1 (evaluating effective solutions). Professional plugin decisions require balancing features, costs, risks, and long-term maintenance—exactly the judgment businesses need from technology advisors.

9.7 Practice Exercises

NoteExercise Levels
  • Level 1: Direct application
  • Level 2: Minor modifications
  • Level 3: Combining concepts
  • Level 4: Problem-solving
  • Level 5: Open-ended design

Exercise 7.1: Plugin Research (Level 1)

On your local WordPress site:

  1. Search for and compare three SEO plugins (e.g., Yoast, RankMath, All in One SEO)
  2. For each, document: active installs, last updated, rating, key features
  3. Install one and explore its settings
  4. Write a brief summary of which you’d recommend and why

Exercise 7.2: Create a Child Theme (Level 2)

Create a child theme for your local site:

  1. Follow the child theme creation process
  2. Add custom CSS that changes the site’s link colour
  3. Verify the change appears
  4. Confirm the parent theme still functions

Document the process with screenshots.

Exercise 7.3: PHP Customisation with AI (Level 3)

Use AI to add a custom feature to your WordPress site:

  1. Choose one of these features (or propose your own):

    • Display “Reading time: X minutes” above each post
    • Add a “Back to top” button that appears when scrolling
    • Show related posts at the end of each blog post
    • Add a custom greeting based on time of day in the header
  2. Ask your AI to help you implement it in your child theme’s functions.php

  3. For the code AI provides:

    • Read through it and identify what each part does
    • Ask AI to explain anything you don’t understand
    • Test it on your local site
    • Document what you learned
  4. Write 200 words explaining: What did the code do? What PHP concepts were used? What would you modify?

Exercise 7.4: Build a Plugin with AI (Level 4)

Create a simple WordPress plugin using AI assistance:

  1. Define a specific need (examples):

    • A “Coming Soon” banner for selected pages
    • Social media share buttons for posts
    • A shortcode that displays a styled call-to-action box
    • A widget that shows recent posts from a specific category
  2. Ask AI to create the plugin, requesting comments that explain the code

  3. Install and test the plugin on your local site

  4. Document:

    • The prompts you used with AI
    • How you tested the plugin
    • Any modifications you made
    • What you learned about WordPress plugin structure

Exercise 7.5: Plugin Audit (Level 3)

Your local site probably has several plugins now. Conduct an audit:

  1. List every installed plugin
  2. For each, document: purpose, last update, whether it’s essential
  3. Identify any that could be removed
  4. Identify any that should be replaced with better alternatives
  5. Create a recommendation document

Exercise 7.6: Build vs Buy Analysis (Level 4)

A client needs an event calendar for their community centre. Events have dates, times, locations, descriptions, and categories. Visitors should be able to filter by category and view a monthly calendar.

Research options and write a 400-word recommendation:

  1. Identify two or three plugin options
  2. Evaluate each against requirements
  3. Consider what custom development would entail
  4. Make a recommendation with justification
  5. Address risks and mitigation

Exercise 7.7: Extension Strategy (Level 5)

You’re taking over a WordPress site for a small marketing agency. They need:

  • Portfolio showcase
  • Team member profiles
  • Client testimonials
  • Contact forms
  • Blog
  • Newsletter signup

Currently, they have 23 plugins installed, some of which seem redundant.

Develop an extension strategy document (500 words):

  1. What categories of plugins are essential?
  2. How would you evaluate their current plugins?
  3. What’s your approach to consolidation?
  4. How would you communicate changes to the client?
  5. What ongoing maintenance would you recommend?

This exercise develops professional consulting skills.

9.8 Chapter Summary

  • Every extension decision weighs build vs. buy trade-offs
  • Plugin evaluation requires systematic criteria, not just feature lists
  • Child themes allow safe customisation that survives updates
  • PHP is WordPress’s foundation—understanding basics enables deeper customisation
  • The Loop and hooks (actions/filters) are core WordPress patterns
  • AI excels at writing WordPress plugins and theme customisations
  • Technical debt from plugins accumulates silently
  • Professional judgment means recommending the right solution, not the most impressive one

9.9 Reflection

Before moving to Chapter 8, ensure you can:

9.10 Your Learning Journal

Record your responses to these prompts:

  1. Extension Audit: Look at a WordPress site you use or manage. How many plugins does it have? Do they all seem necessary? What would you consolidate?

  2. Trade-off Thinking: Think of a feature request that could be solved by either plugin or custom development. What factors would tip your recommendation one way or the other?

  3. AI Conversation Reflection: What question about plugin evaluation or build vs. buy decisions did your AI partner help clarify?

  4. Professional Communication: How would you explain to a client why you’re recommending a paid plugin instead of a free one? What value does the paid version provide?

9.11 Next Steps

You now know how to extend WordPress wisely with plugins and child themes. But there’s another approach entirely: using WordPress as a content backend while building the frontend with modern tools.

In Chapter 10, we’ll explore headless WordPress—using the WordPress REST API to power a React frontend. This bridges your CMS knowledge with the modern frontend skills from Part III and represents how many larger organisations use WordPress today.