Skip to content

WooCommerce & co-existence

Sikshya is intentionally not built on top of WooCommerce. The free plugin ships its own native cart, checkout, gateways, orders, and coupons — so a single course is one click from "publish" to "sell" without bolting on another commerce stack.

That said, plenty of sites already run WooCommerce for physical products or memberships. Sikshya co-exists with WooCommerce on the same site. This page is the practical guide to making them play nicely.

Mental model

  • WooCommerce sells products, carts, taxes, and shipping for shippable / digital goods.
  • Sikshya sells courses, enrollments, certificates, and learner experience.

You'll have two checkouts — one for Woo products, one for Sikshya courses — each with its own customer / order tables, gateway configs, and email templates.

Should I use Woo for courses too?

Short answer: no, not unless you have a specific reason.

SituationRecommendation
Most of your revenue is coursesUse Sikshya checkout (faster, simpler).
You sell digital products and a few coursesEither works; pick the cart with the most SKUs.
You need subscriptions for membershipsSikshya Pro Subscriptions add-on works without Woo Subscriptions.
You need exotic shipping / tax / Woo extensionsUse Woo for those SKUs; Sikshya for courses.

Two-checkout site

A typical co-existing site has:

  • /shop/ — Woo product catalog.
  • /cart/, /checkout/, /my-account/ — Woo virtual pages.
  • /courses/ — Sikshya catalog.
  • /cart/, /checkout/, /my-learning/ — Sikshya virtual pages on the same paths.

Slug collision risk: Woo also uses /cart/ and /checkout/. Two safe configurations:

  1. Sikshya wins — leave Sikshya at /cart/ and /checkout/. Move Woo to /shop-cart/ and /shop-checkout/.
  2. Woo wins — rename Sikshya virtual pages to /learn-cart/, /learn-checkout/, /my-learning/. Leave Woo at /cart/ and /checkout/.

Pick one strategy and stick to it. Don't try to share /cart/ between both — payment debugging gets miserable.

Account pages

Two account pages is normal:

  • /my-account/ — Woo (orders, addresses, downloads, subscriptions).
  • /my-learning/ — Sikshya (courses, wishlist, certificates, payments, profile).

Add cross-links from each to the other so customers don't get lost.

Single sign-on

Sikshya uses standard WordPress users. A user buying via Woo and enrolling via Sikshya is the same WP user — their progress and orders are linked automatically.

Cross-selling courses from Woo products

If a Woo product becomes a course-access voucher, hook into Woo's payment-complete and call Sikshya's enrollment hook:

php
add_action('woocommerce_payment_complete', function ($order_id) {
    $order = wc_get_order($order_id);
    foreach ($order->get_items() as $item) {
        if ($item->get_product_id() === 1234) {
            $course_id = 9876;
            $user_id = $order->get_user_id();
            if ($user_id) {
                do_action('sikshya_user_enrolled', $user_id, $course_id, ['source' => 'woo']);
            }
        }
    }
});

Caching

Standard advice — exclude:

  • /cart/, /checkout/, /my-account/, /my-learning/, /learn/, /order/
  • /wp-json/* (especially /sikshya/v1/checkout/* and /me/* routes)
  • Logged-in cookies on course-detail pages

Plugins that often conflict (and the fix)

PluginSymptomFix
Heavy CSS frameworks (Avada, Total)Course card layout shiftsOverride card.php in your child theme.
Aggressive minifiers (Autoptimize)React admin shell breaksExclude /wp-admin/ from minification.
Login redirect pluginsSikshya virtual login failsWhitelist ?sikshya_page=login.
Membership plugins (MemberPress, Restrict Content Pro)Lock Sikshya's /learn/Add Sikshya pages to the plugin's exclusion list.
2FA / SSO pluginsAccount creation at checkout failsWhitelist sikshya_* actions.

What's next