Loading...
Loading...
Use when starting a new WooCommerce extension, setting up plugin headers, checking WooCommerce availability, declaring HPOS and block checkout compatibility with FeaturesUtil, or understanding WooCommerce extension architecture. Covers Requires Plugins header, WC requires at least, WC tested up to, before_woocommerce_init, declare_compatibility for custom_order_tables and cart_checkout_blocks, plugins_loaded initialization, class_exists WooCommerce check, and Interactivity API store privacy (lock true).
npx skill4agent add peixotorms/odinlayer-skills woocommerce-setupadd_action( 'plugins_loaded', 'mce_init' );
function mce_init(): void {
if ( ! class_exists( 'WooCommerce' ) ) {
add_action( 'admin_notices', function (): void {
echo '<div class="error"><p>' .
esc_html__( 'My Extension requires WooCommerce.', 'my-extension' ) .
'</p></div>';
} );
return;
}
// Safe to use WooCommerce APIs from here.
}/**
* Plugin Name: My WooCommerce Extension
* Plugin URI: https://example.com/my-extension
* Description: Extends WooCommerce with custom features.
* Version: 1.0.0
* Author: Your Name
* Requires Plugins: woocommerce
* WC requires at least: 8.0
* WC tested up to: 10.4
* Requires PHP: 7.4
*/| Header | Purpose |
|---|---|
| WordPress 6.5+ enforces the dependency automatically |
| Minimum WooCommerce version |
| Latest tested WooCommerce version (shows in admin) |
add_action( 'before_woocommerce_init', function (): void {
if ( class_exists( '\Automattic\WooCommerce\Utilities\FeaturesUtil' ) ) {
// Declare HPOS compatibility.
\Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility(
'custom_order_tables',
__FILE__,
true
);
// Declare Block Checkout compatibility.
\Automattic\WooCommerce\Utilities\FeaturesUtil::declare_compatibility(
'cart_checkout_blocks',
__FILE__,
true
);
}
} );| Feature key | What it declares |
|---|---|
| HPOS (High-Performance Order Storage) compatibility |
| Block Checkout compatibility |
lock: true| Mistake | Fix |
|---|---|
| Not checking if WooCommerce is active | Wrap init in |
| Not declaring HPOS compatibility | Add |
| Not declaring Block Checkout compatibility | Add |
Using | Use |
| Depending on WC Interactivity API stores | All WC stores are |
Missing | Add it — WordPress 6.5+ enforces the dependency |