Addofy voor developers
Addofy is gebouwd om uit te breiden. Overal waar Addofy iets toont, verzamelt of beslist, kan jouw plugin of thema dat toevoegen, aanpassen of weghalen met een filter of een action, zonder de code van Addofy aan te raken en zonder trucjes met de DOM. Deze documentatie beschrijft die publieke API: PHP-hooks, PHP-classes, de JavaScript-API, events, JS-filters en CSS-tokens.
Waar begin je
- Snelstart: je eerste Addofy-extensie: een kleine plugin met een module en een melding.
- Een module schrijven: het belangrijkste bouwblok.
- De JavaScript-API: commando's, sneltoetsen, events en filters.
- Hookreferentie: elke publieke action en filter.
Spelregels
- Eerst native. Waar WordPress of WooCommerce al een hook heeft (
admin_bar_menu,add_meta_box,manage_{screen_id}_columns,register_rest_route,WP_CLI::add_command()), ondersteunt Addofy die hook en hoor je die te gebruiken. Addofy voegt alleen eigenadba_-hooks toe voor de onderdelen die het zelf bouwt. - Standaard is geen wijziging. Elke filter begint met de huidige waarde. Zonder callbacks gedraagt Addofy zich precies als zonder de hook.
- Gevalideerd. Addofy controleert wat een filter teruggeeft (type, verplichte sleutels, toegestane waarden). Een onjuist resultaat valt terug op de standaardwaarde en schrijft, met
WP_DEBUGaan, één logregel met de naam van de hook. Een kapotte callback breekt nooit een scherm. - Rechten blijven native. Een filter kan verbergen of herordenen, maar nooit toegang geven. Tabs, kaarten en acties die je toevoegt controleren hun eigen capability.
- De eigen instellingen van Addofy blijven bereikbaar. Het menu, de instellingentabs en de instellingentemplates kunnen met geen enkele hook worden verborgen of verwijderd.
- Dezelfde laadregels voor jou. Assets die je via Addofy in de wachtrij zet, laden alleen waar Addofy actief is: nooit op de frontend, nooit in veilige modus (
?adba_safe=1,ADBA_SAFE_MODE) en nooit op een uitgesloten scherm.
Waarom de prefix `adba` is
Alles wat publiek is in de code heeft de prefix adba: PHP-functies en hooks (adba(), adba_register_module(), de filters en actions adba_*), constants (ADBA_SAFE_MODE), scripthandles (adba-core), het object window.adba en de CSS-tokens (--adba-*). De prefix stamt uit de werknaam van de plugin, van voordat hij Addofy heette. Hij blijft: hernoemen zou elke plugin, elk thema en elk snippet breken dat deze hooks al gebruikt, en adba is kort en uniek, dus botst niet met andere plugins. De naam in de interface en in deze documentatie is Addofy; de prefix in de code is adba, en die verandert niet.
Stabiliteitsbelofte
Alles wat in een docblock met @api is gemarkeerd, is publiek: elke hook in de hookreferentie, de classes en methodes hieronder en de window.adba-API in docs/adba.d.ts. Elk onderdeel heeft @since met de versie waarin het verscheen. Een publieke hook of methode wordt alleen hernoemd of verwijderd via apply_filters_deprecated() of do_action_deprecated() (of een waarschuwing in de JS-console), met minstens één minor-versie overlap. Classes en methodes zonder @api zijn intern en mogen in elke release veranderen.
Publieke PHP-classes en helpers:
| Naam | Gebruik |
|---|---|
adba( ?string $service ) | De servicecontainer, of één service: adba( 'assets' ), adba( 'rules' ), adba( 'store' ), adba( 'config' ). |
adba_register_module( string $class ) | Registreert een moduleclass. Roep dit aan vóór plugins_loaded prioriteit 20. |
adba_is_active_on_screen( ?string $screen_id ) | Of Addofy actief is op het (huidige) scherm. |
adba_trigger_alert( string $event, int $object_id, array $data ) | Verstuurt een meldingsevent (zie adba_alert_events). Een event kan default_roles meegeven (sinds 2.36.0): aan voor die rollen tot de eigenaar of de gebruiker kiest. |
adba_alerts_browser( int $user_id = 0 ) | Sinds 2.36.0. Of Addofy browsermeldingen naar de gebruiker stuurt: de module Meldingen staat aan en de gebruiker heeft ze aangezet in het profiel. Laat je eigen browsermelding weg als dit true is. |
adba_is_order_blocked( int $user_id = 0, string $email = '' ) | Sinds 2.36.0. Of de klant geen nieuwe bestellingen mag plaatsen (module Klanten blokkeren, na het filter adba_order_block_is_blocked). False als de module uit staat en in Light. |
adba_remove_alerts( string $event, int|int[] $object_ids ) | Sinds 2.36.0. Haalt de meldingen van een event voor die objecten weg, bij alle gebruikers (ook gearchiveerde). Roep het aan als het object weg is, zodat geen melding naar niets wijst. Een open lijst laadt opnieuw. |
Filter adba_alert_sections | Sinds 2.36.0. Voegt een sectie (kopje) toe aan de meldingenlijst: id => array( 'label' => ..., 'order' => ... ). Zet een event erin met 'section' => id in adba_alert_events. De site-eigenaar en elke gebruiker kunnen een sectie verbergen; de meldingen staan dan onder Algemeen. |
Modules\ModuleInterface, Modules\AbstractModule | Een module. |
Modules\Settings\TabInterface, Modules\Settings\AbstractTab | Een instellingentab. |
Settings\Fields\FieldInterface, Settings\Fields\AbstractField | Een veldtype voor instellingen. |
Compat\AdapterInterface, Compat\AbstractAdapter | Een compatibiliteitsadapter. |
Visibility\Collectors\CollectorInterface, Visibility\Collectors\AbstractCollector | Een collector voor de tab Zichtbaarheid. |
Visibility\RuleEngine::is_hidden() | Of een item verborgen is voor de huidige gebruiker. |
Modules\Search\SearchProviderInterface, FilterableSearchProviderInterface | Een zoekprovider aan de serverkant. |
Modules\OrderActions\QuickActionInterface | Een onderdeel in de popup met snelle bestelacties. |
Setup\StepInterface, Setup\AbstractStep | Een stap van de quick start. |
Core\Assets::enqueue_external() | Zet je eigen script of stylesheet in de wachtrij. |
Settings\Prefs (containerservice prefs): effective(), stored(), defaults(), update(), extension_defs() | Gebruikersvoorkeuren lezen en wijzigen, ook je eigen. Store::extension_prefs() werkt nog, maar is deprecated; Store::all_prefs() is verwijderd in 2.34.0. |
Support\Filter | Gevalideerde filters, ook voor je eigen hooks. |
Support\Components::card(), toggle() | Markup in de stijl van Addofy. |
Support\View | Rendert Addofy-templates (met overrides vanuit het thema). |