Btw
Je winkelwagen

Je winkelwagen is leeg.

De JavaScript-API van Addofy (window.adba)

Laad je script met de dependency adba-core en gebruik dan window.adba. De volledige TypeScript-types staan in docs/adba.d.ts in de plugin.

adba.boot( 'myplugin', () => {
	adba.commands.register( { id: 'myplugin-report', label: 'Open report', run: () => location.assign( '/wp-admin/admin.php?page=myplugin' ) } );
	adba.shortcuts.register( { id: 'myplugin-report', keys: 'g r', label: 'Go to the report', handler: () => location.assign( '/wp-admin/admin.php?page=myplugin' ) } );
	adba.notices.add( { id: 'myplugin-sync', level: 'success', text: 'Sync done.', source: 'myplugin' } );
} );

adba.on( 'module:ready', ( { id } ) => console.log( 'started', id ) );

adba.boot() isoleert fouten: een mislukte entry wordt gelogd met zijn id. Zodra de entry zonder fouten gestart is, vuurt het module:ready.

Laden

Sinds 1.4.0 laadt de admin één script voor de core en de modules die op elk scherm draaien (core/global.js). Onderdelen die alleen bij interactie nodig zijn, laden bij het eerste gebruik: de palette-UI, het bewerkpaneel, het meldingenpaneel, sectietabs en de opslaanbalk, de Help-rijen en adba.api.document().

De API blijft hetzelfde. adba.drawer.open() antwoordt nog steeds direct, adba.sectionTabs.create() geeft een controller terug en adba.savebar() geeft een object terug waarvan bar binnenkomt zodra het geladen is.

Meldingen

adba.notices.add( { id, text, level, source, dismissible } ) accepteert platte tekst, gezet met textContent: er komt geen HTML van een extensie op de pagina. Voor een melding met links of markup toon je een gewone adminmelding in PHP. Het meldingenpaneel pikt die op, en adba_notice_sources of data-adba-source wijst de groep toe.

Events

Luister met adba.on( name, callback ).

EventPayloadWanneer
readyadbaDe core is gestart.
module:ready{ id }Een module-entry is zonder fouten gestart.
prefs:change{ key, value, remote? }Een voorkeur is gewijzigd (ook vanuit een andere tab).
prefs:errorerrorEen voorkeur kon niet worden opgeslagen.
api:error{ error, request, silent }Een REST-aanroep is mislukt.
commands:changeEr is een commando geregistreerd.
search:open, search:closeDe palette is geopend of gesloten.
search:select{ item, handled }Een resultaat of commando is gekozen. Zet handled = true om het over te nemen.
search:scope{ scope }Multisite: de palette schakelde tussen deze site (site) en alle sites (network).
palette:run{ command, values }Een palettecommando draait, met de waarden van zijn parameters. Sinds 2.11.0.
view:apply{ view }Een opgeslagen weergave wordt geopend vanuit zijn pil of het weergavenmenu. Sinds 2.11.0.
view:save{ name, share }Een weergave is opgeslagen; share is leeg (alleen ik), all of een rol. Sinds 2.11.0.
drawer:open, drawer:close{ type, url }Het zijpaneel is geopend of gesloten.
drawer:saved{ url }Een scherm in het zijpaneel is opgeslagen.
notices:change{ count, level }Het aantal of niveau in het meldingenpaneel is gewijzigd.
pagebar:ready{ bar }De paginabalk is klaar.
listtable:ready, listtable:updatedEen lijsttabel is klaar of opnieuw geladen.
listtable:appended{ rows }Meer laden (telefoons) heeft de rijen van de volgende pagina toegevoegd. Sinds 2.8.0.
orders:ready, products:ready, settings:updated, wcsettings:updatedSchermspecifiek.
guide:open{ id, type }Een uitleg opende als kaart (card) of rondleiding (tour). Sinds 2.9.0.
guide:done{ id, completed }Een uitleg sloot; completed als elke stap van de rondleiding gezien is. Sinds 2.9.0.
img:fallback{ element }Een lijstafbeelding die niet laadde, kreeg de placeholder (filter adba_image_placeholder). Sinds 2.12.2.
img:fallback{ element }Een plaatje in een lijst dat niet laadde kreeg de placeholder (filter adba_image_placeholder). Sinds 2.12.2.

JS-filters

Addofy gebruikt het native WordPress hooks-script. Voeg een filter toe met wp.hooks.addFilter(). Een callback die een fout geeft, wordt gelogd met de filternaam en de oorspronkelijke waarde wordt gebruikt.

wp.hooks.addFilter( 'adba.search.results', 'myplugin', ( groups, { query } ) => [
	...groups,
	{ id: 'myplugin', label: 'Reports', items: [ { title: `Report for "${ query }"`, url: '/wp-admin/admin.php?page=myplugin' } ] },
] );
FilterWaardeExtra argument
adba.search.resultsResultaatgroepen [ { id, label, items: [ { title, url, subtitle, badge } ] } ] voordat ze renderen.{ query, scope }
adba.commands.listCommando's die de palette toont.{ screen }
adba.paletteCommandsCommando's vlak voordat de palette ze rangschikt voor de getypte zoekterm (sinds 2.11.0).{ query, scope }
adba.notices.sourceDe plugingroep { slug, name } van een melding, of null voor Overig.het meldingselement
adba.drawer.optionsOpties wanneer het zijpaneel opent (url moet een string blijven).
adba.orderQuickActionsOnderdelen van de popup met snelle bestelacties (sinds 1.2.0).de bestelgegevens
adba.pagebar.actionsKnoppen van de paginabalk vanuit JS: [ { id, label, onClick, icon } ], icoon een dashicons-*-class.{ screen, bar }
adba.queueActionEen achtergrondtaak voordat adba.queue hem uitvoert (sinds 2.5.0). Geef de taak terug, gewijzigd of niet, of een falsy waarde om hem te weigeren.

Achtergrondacties (adba.queue, sinds 2.5.0)

adba.queue.run( { key, label, element, apply, request, rollback, undo } ) past de interface direct aan met apply(), markeert element met aria-busy en de class adba-pending (een klein pulserend puntje) en voert request() op de achtergrond uit.

  • Gebruik adba.api of fetch in request() zodat elke serverhook nog draait.
  • Bij succes toont een toast label, met Ongedaan maken als undo() is meegegeven.
  • Bij een fout draait rollback() en biedt de toast Opnieuw proberen aan.
  • Taken met dezelfde key draaien na elkaar, andere naast elkaar (maximaal 4).
  • Zolang er taken lopen, vraagt het verlaten van de pagina om bevestiging.
  • Laad het met adba.load( 'queue' ); het staat daarna ook op adba.queue.
  • Events: queue:start, queue:done en queue:fail, elk met { key, label }.

De PHP-filters adba_async_row_actions (status-, prullenbak- en herstellinks) en adba_async_bulk_actions (bulkacties die in batches van 20 draaien) bepalen welke lijstacties de wachtrij gebruiken.

Sorteerbare lijsten (adba.sortable, sinds 2.36.0)

Met adba.sortable( container, options ) zet een gebruiker de items van een lijst op volgorde door te slepen, met dezelfde greep, chip, drop-lijn en autoscroll als bij het sorteren van termen en het menu. Muis en aanraking werken; Escape breekt af. De code laadt bij de eerste aanroep; de aanroep geeft meteen { refresh, destroy } terug.

const sorter = window.adba?.sortable?.( list, {
	items: 'li.myplugin-rule',
	label: ( item ) => item.dataset.name,
	disabled: () => busy,
	onSort: ( from, to, item ) => save( from, to ),
} );
  • items: selector voor de items tussen de directe kinderen van container. Standaard: alle kinderen.
  • handle: selector voor je eigen greep in een item (geef die touch-action: none). Zonder handle zet Addofy een greep met zes puntjes in elk item.
  • label( item ): tekst in de chip. Standaard: de tekst van het item.
  • disabled: true, of een functie die true geeft, blokkeert slepen. Wordt gecontroleerd als een sleep begint.
  • onSort( from, to, item ): na het verplaatsen van het item in de DOM. De indexen tellen alleen de items.

Eén niveau, geen nesten. Toetsenbordgebruikers houden je eigen knoppen omhoog en omlaag. Opnieuw aanroepen op dezelfde container vervangt de vorige aanroep, dus je kunt de lijst opnieuw tekenen en opnieuw aanroepen. Nieuwe items krijgen vanzelf een greep. destroy() haalt grepen en listeners weg. Controleer of window.adba?.sortable bestaat en houd je eigen terugval als Addofy niet actief is.

Gerelateerd

Klaar om je AI te koppelen aan echte tools?

Start gratis proefperiode