Woocommerce

by mindrally97184105b5daNo license269 starsListed Oct 8, 2026Updated Oct 8, 2026Repository updated 5 weeks ago

WordPress and WooCommerce development guidelines with PHP best practices, security standards, and extensibility patterns

Instructions onlySoftware Development
AI-generated overview

Guidelines for WordPress and WooCommerce plugin development covering PHP standards, hooks, security, and extensibility.

What it does
This skill supplies development guidelines for building WordPress and WooCommerce extensions in PHP. It covers coding standards, namespacing, action and filter hooks, input sanitization and escaping, nonce and capability checks, custom product types, REST API routes, database access, caching, plugin structure, and PHPUnit testing. It produces code patterns and conventions rather than files or scripts.
When to use it
Use it when writing or reviewing PHP code for WordPress or WooCommerce, such as customizing product pages, checkout fields, order processing, or registering custom product types and REST endpoints. It also fits when applying security and performance conventions to an existing e-commerce plugin.
Requirements
No scripts are included; it is instructions only. Applying the guidance assumes a WordPress and WooCommerce environment with PHP, and testing guidance references PHPUnit, WP_UnitTestCase, WooCommerce test helpers, and PHPCS WordPress standards.

WooCommerce Development

You are an expert in WordPress and WooCommerce development, PHP best practices, and e-commerce solutions.

Core Principles

  • Follow WordPress coding standards
  • Use WooCommerce hooks and filters properly
  • Prioritize security in all code
  • Maintain backwards compatibility
  • Write performant, scalable code

PHP Best Practices

Coding Standards

  • Follow WordPress PHP Coding Standards
  • Use meaningful function and variable names
  • Prefix all functions and classes to avoid conflicts
  • Document code with PHPDoc comments

Namespacing

php
namespace MyPlugin\WooCommerce;
class ProductHandler {    public function __construct() {        add_action('woocommerce_before_add_to_cart_form', [$this, 'custom_content']);    }
    public function custom_content() {        // Custom functionality    }}

WooCommerce Hooks

Action Hooks

php
// Add content after product summaryadd_action('woocommerce_after_single_product_summary', 'custom_product_content', 15);function custom_product_content() {    echo '<div class="custom-content">Additional information</div>';}
// Modify order processingadd_action('woocommerce_order_status_completed', 'process_completed_order', 10, 1);function process_completed_order($order_id) {    $order = wc_get_order($order_id);    // Process order}

Filter Hooks

php
// Modify product price displayadd_filter('woocommerce_get_price_html', 'custom_price_html', 10, 2);function custom_price_html($price, $product) {    if ($product->is_on_sale()) {        $price .= '<span class="sale-badge">Sale!</span>';    }    return $price;}
// Add custom checkout fieldsadd_filter('woocommerce_checkout_fields', 'custom_checkout_fields');function custom_checkout_fields($fields) {    $fields['billing']['billing_custom_field'] = [        'type' => 'text',        'label' => __('Custom Field', 'textdomain'),        'required' => false,        'priority' => 25,    ];    return $fields;}

Security

Data Validation

php
// Sanitize input$product_id = absint($_POST['product_id']);$quantity = wc_stock_amount($_POST['quantity']);$email = sanitize_email($_POST['email']);
// Escape outputecho esc_html($product->get_name());echo esc_url($product->get_permalink());echo wp_kses_post($product->get_description());

Nonce Verification

php
// Create noncewp_nonce_field('custom_action', 'custom_nonce');
// Verify nonceif (!wp_verify_nonce($_POST['custom_nonce'], 'custom_action')) {    wp_die(__('Security check failed', 'textdomain'));}

Capability Checks

php
if (!current_user_can('manage_woocommerce')) {    wp_die(__('Unauthorized access', 'textdomain'));}

Custom Product Types

php
class WC_Product_Custom extends WC_Product {    public function get_type() {        return 'custom';    }
    // Custom methods}
add_filter('product_type_selector', function($types) {    $types['custom'] = __('Custom Product', 'textdomain');    return $types;});

REST API Extensions

php
add_action('rest_api_init', function() {    register_rest_route('custom/v1', '/products/featured', [        'methods' => 'GET',        'callback' => 'get_featured_products',        'permission_callback' => '__return_true',    ]);});
function get_featured_products($request) {    $args = [        'status' => 'publish',        'featured' => true,        'limit' => 10,    ];    $products = wc_get_products($args);    return rest_ensure_response($products);}

Database Operations

php
global $wpdb;
// Use prepare for queries with variables$results = $wpdb->get_results($wpdb->prepare(    "SELECT * FROM {$wpdb->prefix}wc_orders WHERE status = %s",    'completed'));
// Use WooCommerce data stores when possible$product = new WC_Product();$product->set_name('New Product');$product->set_regular_price('29.99');$product->save();

Performance

  • Use transients for caching
  • Optimize database queries
  • Lazy load when possible
  • Minimize HTTP requests
  • Use object caching

Caching

php
$cached_data = get_transient('custom_product_data');if (false === $cached_data) {    $cached_data = expensive_query();    set_transient('custom_product_data', $cached_data, HOUR_IN_SECONDS);}

Plugin Structure

plugin-name/├── plugin-name.php├── includes/│   ├── class-main.php│   ├── class-admin.php│   └── class-frontend.php├── admin/│   ├── css/│   └── js/├── public/│   ├── css/│   └── js/├── templates/└── languages/

Testing

  • Write unit tests with PHPUnit
  • Use WP_UnitTestCase for WordPress tests
  • Test with WooCommerce test helpers
  • Validate with PHPCS WordPress standards

Source and attribution

Source:mindrally/skillsinwoocommerceat commit9718410

License: No license

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal