WordPress Developer
From zero to building professional WordPress websites and plugins
WordPress powers 43% of all websites on the internet — from small blogs to Fortune 500 company sites. Learning WordPress development is one of the fastest ways to start earning as a web developer in India. Freelancers charge ₹5,000–₹2,00,000 per website, and full-time WordPress developers earn ₹3–25 LPA. This roadmap takes you from absolute zero to building custom themes, plugins, and client-ready websites in 3–6 months.
- Students who want to earn while studying
- Freshers looking for their first web development job
- Anyone who wants to build websites for clients or their own business
- Designers who want to add development skills
Learn HTML structure and CSS styling. Build 3 static web pages. Understand divs, classes, flexbox, and responsive design. This is the foundation of every WordPress theme.
Learn variables, functions, DOM manipulation, and events. You need JS to understand WordPress themes and add interactivity. Focus on vanilla JS before jQuery.
WordPress is built on PHP. Learn variables, arrays, functions, loops, and include/require. You don't need to be a PHP expert — just understand how it works.
WordPress stores everything in MySQL. Learn basic SQL: SELECT, INSERT, UPDATE, DELETE. Understand WordPress database tables (wp_posts, wp_users, wp_options).
Install WordPress locally (XAMPP). Learn the dashboard, posts vs pages, categories, menus, widgets, and plugins. Understand the WordPress file structure and template hierarchy.
Build a custom WordPress theme from scratch. Learn template files (header.php, footer.php, index.php, single.php). Use WordPress template tags and the Loop. Create a child theme.
Create custom plugins using WordPress hooks (actions & filters). Build a simple contact form plugin. Learn shortcodes, custom post types, and meta boxes.
Learn WordPress security best practices: sanitize inputs, nonces, user roles. Optimize performance: caching (WP Rocket), image optimization, CDN setup, database cleanup.
Move your local WordPress site to a live server using cPanel. Set up a domain, SSL certificate, and configure wp-config.php. Use All-in-One WP Migration plugin.
Build 3 portfolio websites (different niches). Create profiles on Fiverr, Upwork, and LinkedIn. Start with small projects (₹5K-20K) and scale up. Join WordPress Facebook groups.
Deep Dive Topics
WordPress Theme Development
A WordPress theme controls the visual presentation of your site. Every theme follows the Template Hierarchy — WordPress looks for specific template files in a set order to decide which file renders each page type.
Key template files: index.php (fallback), single.php (single posts), page.php (static pages), archive.php (category/tag archives), header.php, footer.php, functions.php (theme logic).
Child Themes: Always create a child theme when customizing an existing theme. A child theme inherits the parent's styles and templates but lets you override them safely — your changes survive parent theme updates.
Starter Theme: Use Underscores (_s) — a minimal, well-structured starter theme from Automattic. It gives you the correct file structure without unnecessary bloat.
Minimal functions.php + index.php example:
<?php
// functions.php — enqueue styles
function mytheme_scripts() {
wp_enqueue_style(
'mytheme-style',
get_stylesheet_uri(),
[],
'1.0.0'
);
}
add_action( 'wp_enqueue_scripts', 'mytheme_scripts' );
// Register navigation menu
function mytheme_setup() {
register_nav_menus([
'primary' => __( 'Primary Menu', 'mytheme' ),
]);
add_theme_support( 'title-tag' );
add_theme_support( 'post-thumbnails' );
}
add_action( 'after_setup_theme', 'mytheme_setup' );<?php // index.php
get_header(); ?>
<main>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<article>
<h2><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h2>
<?php the_excerpt(); ?>
</article>
<?php endwhile; else : ?>
<p>No posts found.</p>
<?php endif; ?>
</main>
<?php get_footer(); ?>WordPress Plugin Development
Plugins extend WordPress functionality without modifying core files. The plugin system is built on hooks — Actions and Filters — that let you inject code at specific points in WordPress execution.
- Actions — do something at a specific point (
add_action) - Filters — modify data before it is used (
add_filter) - Shortcodes — embed dynamic content in posts/pages with
[my_shortcode] - Custom Post Types — register new content types (e.g., Portfolio, Testimonials)
- Custom Taxonomies — create new grouping systems like categories/tags
Minimal plugin example:
<?php
/**
* Plugin Name: My Hello Plugin
* Description: Adds a [hello] shortcode.
* Version: 1.0
* Author: Your Name
*/
// Security: prevent direct access
if ( ! defined( 'ABSPATH' ) ) exit;
// Register shortcode
function mhp_hello_shortcode( $atts ) {
$atts = shortcode_atts(
[ 'name' => 'World' ],
$atts,
'hello'
);
return '<p>Hello, ' . esc_html( $atts['name'] ) . '!</p>';
}
add_shortcode( 'hello', 'mhp_hello_shortcode' );
// Add a custom admin notice
function mhp_admin_notice() {
echo '<div class="notice notice-success">
<p>My Hello Plugin is active!</p>
</div>';
}
add_action( 'admin_notices', 'mhp_admin_notice' );
Save this file as wp-content/plugins/my-hello-plugin/my-hello-plugin.php and activate it from the WordPress admin. Use [hello name="India"] in any post or page.
WooCommerce — WordPress E-Commerce
WooCommerce powers 28% of all online stores worldwide. Adding WooCommerce skills to your WordPress toolkit can double or triple your freelance rates. E-commerce projects in India typically pay ₹20,000–₹2,00,000+.
Core WooCommerce concepts:
- Products — Simple, Variable, Grouped, External/Affiliate
- Payments — Razorpay, PayU, Stripe, Cash on Delivery (India-specific)
- Shipping — Flat rate, Free shipping, Shiprocket integration
- WooCommerce Hooks —
woocommerce_before_cart,woocommerce_checkout_fields, etc. - REST API — manage products/orders programmatically
Popular WooCommerce plugins (India):
| Plugin | Purpose | Cost |
|---|---|---|
| Razorpay for WooCommerce | Indian payment gateway | Free |
| YITH WooCommerce Wishlist | Wishlist feature | Free/Paid |
| WooCommerce PDF Invoices | Auto-generate GST invoices | Free |
| Shiprocket | Shipping & courier integration | Free |
| WooCommerce Subscriptions | Recurring payments | Paid |
Salary boost: A WordPress developer with WooCommerce experience earns ₹6–18 LPA vs ₹3–10 LPA without it. Freelance WooCommerce projects start at ₹25,000 and go up to ₹5,00,000 for complex stores.
WordPress Freelancing in India
WordPress freelancing is one of the most accessible ways to earn as a developer in India. You can start earning within 1–2 months of learning, even as a student.
Where to find clients:
| Platform | Best For | Typical Rate |
|---|---|---|
| Fiverr | Beginners, small gigs | ₹2,000–₹30,000/project |
| Upwork | Mid-level, hourly contracts | $5–$25/hour |
| Corporate clients, India | ₹20,000–₹2,00,000/project | |
| Local businesses | Restaurants, shops, clinics | ₹5,000–₹50,000/site |
| Facebook Groups | WordPress India community | Varies |
Pricing guide (India, 2024):
- Basic blog/portfolio — ₹5,000–₹15,000
- Business website (5-10 pages) — ₹15,000–₹50,000
- E-commerce (WooCommerce) — ₹30,000–₹2,00,000
- Custom theme/plugin — ₹20,000–₹1,00,000
- Monthly maintenance — ₹2,000–₹10,000/month
Proposal tips:
- Show 3 portfolio examples relevant to the client's industry
- Give a fixed price, not hourly — clients prefer predictability
- Include 1 month of free support to close deals
- Ask for 50% upfront, 50% on delivery
Portfolio advice: Build 3 free websites for local businesses (restaurant, salon, NGO) in exchange for a testimonial. These become your portfolio. Quality beats quantity — 3 great sites beat 10 mediocre ones.
WordPress Developer Interview Questions
have_posts()), then iterates through them (the_post()), outputting content using template tags like the_title() and the_content().WP_Query is a class that lets you create custom database queries to retrieve posts with specific criteria (post type, category, meta values, date range, etc.). It is the correct way to query posts outside the main loop.wp_enqueue_script() and wp_enqueue_style() inside a function hooked to wp_enqueue_scripts. Never add scripts directly to header.php — this bypasses dependency management and causes conflicts.single-{post-type}-{slug}.php → single-{post-type}.php → single.php → singular.php → index.php.$wpdb->prepare() for all custom database queries. Use sanitize_text_field(), esc_html(), esc_url() to sanitize and escape user input. Never concatenate user input directly into SQL queries.get_template_part() is the WordPress-native way to include template files. It automatically looks in child themes first (before the parent theme), making it child-theme-compatible. Plain include does not follow this hierarchy.