Snelstart: je eerste Addofy-extensie
Deze pagina bouwt de kleinste bruikbare extensie: een aparte plugin die één Addofy-module registreert en een melding op het dashboard toont. Je hebt drie bestanden nodig en alleen de publieke API.
Je hebt een site nodig waarop Addofy actief is en een pluginmap waarin je kunt schrijven.
Elke functie, hook, handle en CSS-token van Addofy begint met adba. Dat is de vaste codeprefix van Addofy en die verandert niet (waarom).
1. Het pluginbestand
Maak wp-content/plugins/hello-addofy/hello-addofy.php aan. De plugin doet niets als Addofy niet actief is, dus hij kan nooit een site breken waarop Addofy uit staat.
<?php
/**
* Plugin Name: Hello Addofy
* Description: A first Addofy extension.
* Version: 1.0.0
*/
// Load the module class only when Addofy is active. The class extends an Addofy class,
// so a plugin that loads before Addofy would otherwise fail.
add_action( 'plugins_loaded', static function () {
if ( ! function_exists( 'adba_register_module' ) ) {
return;
}
require_once __DIR__ . '/class-hello-module.php';
adba_register_module( Hello_Module::class );
}, 5 );
Registreer vóór plugins_loaded prioriteit 20: op dat moment verzamelt Addofy de moduleclasses.
2. De module
Maak class-hello-module.php aan in dezelfde map. Een module heeft een id, een label, een omschrijving en een standaardstatus nodig. Al het andere heeft een standaardwaarde.
<?php
use AddoBack\Core\Screen;
use AddoBack\Modules\AbstractModule;
final class Hello_Module extends AbstractModule {
public function id(): string {
return 'hello'; // Prefix it with your plugin slug in a real plugin.
}
public function label(): string {
return __( 'Hello', 'hello-addofy' );
}
public function description(): string {
return __( 'Shows a notice on the dashboard.', 'hello-addofy' );
}
public function default_enabled(): bool {
return true;
}
public function screens(): array {
return array( 'dashboard' ); // Screen ids. An empty array means every screen.
}
public function on_screen( Screen $screen ): void {
adba( 'assets' )->enqueue_external(
'hello-addofy',
plugins_url( 'hello.js', __FILE__ ),
array( 'adba-core' ), // Needed for window.adba.
'1.0.0'
);
}
}
on_screen() draait alleen op de schermen die de module noemt, en alleen als Addofy daar actief is. Het script dat je via enqueue_external() in de wachtrij zet, volgt dezelfde regels: het laadt nooit op de frontend, in veilige modus of op een uitgesloten scherm.
3. Het script
Maak hello.js aan in dezelfde map.
adba.boot( 'hello', () => {
adba.notices.add( { id: 'hello', level: 'success', text: 'Hello from my extension.', source: 'hello' } );
} );
adba.boot() voert je code geïsoleerd uit: als die een fout geeft, logt Addofy de fout met het id hello en gaat door.
4. Probeer het
- Activeer Hello Addofy onder Plugins.
- Open Addofy > Modules. Je module staat daar met een eigen kaart en een schakelaar.
- Open het dashboard. De melding verschijnt in het meldingenpaneel.
Zet de module uit in Addofy > Modules en de melding is weg. Die schakelaar krijg je als module gratis.
Hoe nu verder
- Een module schrijven: instellingen, vereisten, voorwaarden en timing.
- Instellingentabs en veldtypes: een eigen tab in de instellingen van Addofy.
- JavaScript-API: commando's, sneltoetsen, events en filters.
- Hookreferentie: elke publieke action en filter.
Klaar om het te proberen?