51 lines
1.4 KiB
Plaintext
51 lines
1.4 KiB
Plaintext
---
|
|
title: Module Integration
|
|
description: Integrating Addons usage with Module Registry
|
|
date: 2024-01-31
|
|
---
|
|
|
|
# Addon-Module Integration
|
|
|
|
## Vision
|
|
|
|
**Module Registry as the Single Source of Truth.**
|
|
Functionality extensions—whether built-in Modules or external Addons—should live in the same UI.
|
|
|
|
## Registration
|
|
|
|
Addons register themselves via the `woonoow/addon_registry` filter.
|
|
|
|
```php
|
|
add_filter('woonoow/addon_registry', function($addons) {
|
|
$addons['my-shipping-addon'] = [
|
|
'id' => 'my-shipping-addon',
|
|
'name' => 'My Shipping',
|
|
'description' => 'Custom shipping integration',
|
|
'version' => '1.0.0',
|
|
'author' => 'My Company',
|
|
'category' => 'shipping',
|
|
'icon' => 'truck',
|
|
'settings_url' => '/settings/shipping/my-addon',
|
|
'spa_bundle' => plugin_dir_url(__FILE__) . 'dist/addon.js',
|
|
];
|
|
return $addons;
|
|
});
|
|
```
|
|
|
|
This ensures your addon appears in the **WooNooW Modules** list with a consistent UI, toggle switch, and settings link.
|
|
|
|
## Settings Pages
|
|
|
|
Addons can register their own SPA routes for settings pages.
|
|
|
|
```php
|
|
add_filter('woonoow/spa_routes', function($routes) {
|
|
$routes[] = [
|
|
'path' => '/settings/shipping/my-addon',
|
|
'component_url' => plugin_dir_url(__FILE__) . 'dist/Settings.js',
|
|
'title' => 'My Addon Settings',
|
|
];
|
|
return $routes;
|
|
});
|
|
```
|