WordPress Abilities API

WordPress Abilities API

5.00/5 - (17 votes)
11 min lesetid
Guide
500+ WP-prosjekter
Full-stack-utvikler

WordPress Abilities API er et register over operasjoner som en utvidelse, et tema eller kjernen selv deklarerer i ett forutsigbart format: navn, kategori, skjema for input og output, tilgangssjekk og en funksjon som utfører jobben. Denne siden er en referanse: hva API-et er, hvordan du registrerer en ability, hvilke REST-endepunkter som finnes, hvordan tilganger virker, hva versjon 7.0 og 7.1 la til, og hvor MCP Adapter kommer inn. Ser du etter eksempler på arbeidsflyter bygget på abilities, finner du dem i artikkelen KI-arbeidsflyter i WordPress med Abilities API.

#Hva er WordPress Abilities API

Dev note-en på make.wordpress.org definerer en enkelt ability slik:

“En ability er en selvstendig funksjonsenhet med definerte inndata, utdata, tillatelser og kjørelogikk.”

Jonathan Bossenger, Make WordPress Core, Abilities API in WordPress 6.9, egen oversettelse

Alle registrerte abilities havner i et sentralt register. Det registeret brukes av PHP-kode på serveren, JavaScript-klienten i adminpanelet, REST API og KI-agenter koblet til via MCP Adapter. Utvidelsen beskriver operasjonen én gang, og hver av disse kanalene ser den i samme form, med samme skjema og samme tilgangssjekk.

Lanseringsnyheten for 6.9 beskriver det fra tilgangssiden:

“Det nye Abilities API gir et standardisert, maskinlesbart tillatelsessystem som åpner for neste generasjons AI-drevne og automatiserte arbeidsflyter.”

WordPress News, WordPress 6.9 “Gene”, egen oversettelse

Hver ability tilhører nøyaktig én kategori:

“Hver ability må tilhøre nøyaktig én kategori. Kategorier har en slug, en etikett og en beskrivelse.”

Common APIs Handbook, Abilities API, egen oversettelse

#Hvilken WordPress-versjon har Abilities API

Abilities API kom inn i kjernen med WordPress 6.9, som ble lansert 2. desember 2025. Handbook-en sier det rett ut i en boks øverst på siden:

“Abilities API er bare tilgjengelig for WordPress 6.9 og nyere.”

Common APIs Handbook, Abilities API, egen oversettelse

Senere versjoner har bygget ut API-et uten å endre grunnmuren:

VersjonDatoHva som kom til
6.9 “Gene”2. desember 2025register, kategorier, skjemaer, tilganger, endepunktene wp-abilities/v1
7.0dev note fra 24. mars 2026JavaScript-klient: @wordpress/abilities og @wordpress/core-abilities
7.1 “Mary Lou”19. august 2026flagget meta.public, fire filtre for kjøringen

En utvidelse som også skal kjøre på installasjoner eldre enn 6.9, sjekker at funksjonen finnes før registreringen: dev note-en på make.wordpress.org anbefaler betingelsen function_exists( 'wp_register_ability' ), og det er også den eksemplet nedenfor starter med.

Den bredere sammenhengen rundt 7.0, inkludert resten av KI-endringene, finner du i vår guide til WordPress 7.0 og KI-integrasjon.

#Slik registrerer du en ability i WordPress

Registreringen har to steg: først kategorien, så selve abilityen. Hvert steg har sin egen hook, og rekkefølgen betyr noe.

#Registrere en kategori for abilities

“Kategorier må registreres før de abilities som refererer til dem, ved hjelp av hooken wp_abilities_api_categories_init.”

Make WordPress Core, Abilities API in WordPress 6.9, egen oversettelse

En kategori har slug, etikett og beskrivelse. Argumentet category er påkrevd når du registrerer en ability, og det må peke på slugen til en kategori som allerede ligger i registeret.

#Hooken wp_abilities_api_init

Selve abilityen registreres på en egen action. Registrering et annet sted går ikke gjennom:

“Abilities må registreres på action-hooken wp_abilities_api_init. Forsøk på å registrere abilities utenfor denne hooken vil utløse en _doing_it_wrong()-melding, og registreringen av abilityen vil mislykkes.”

Make WordPress Core, Abilities API in WordPress 6.9, egen oversettelse

#Eksempel på wp_register_ability

Funksjonssignaturen ifølge Code Reference:

function wp_register_ability( string $name, array $args ): ?WP_Ability {

Kilde: Code Reference, wp_register_ability().

Ved suksess returnerer funksjonen den registrerte WP_Ability-instansen, ved feil null. Et minimalt eksempel: en kategori og én skrivebeskyttet ability som returnerer antall publiserte innlegg.

if ( function_exists( 'wp_register_ability' ) ) {

	add_action( 'wp_abilities_api_categories_init', function () {
		wp_register_ability_category( 'moja-wtyczka', array(
			'label'       => 'Moja wtyczka',
			'description' => 'Operacje udostępniane przez Moją wtyczkę.',
		) );
	} );

	add_action( 'wp_abilities_api_init', function () {
		wp_register_ability( 'moja-wtyczka/liczba-wpisow', array(
			'label'               => 'Liczba opublikowanych wpisów',
			'description'         => 'Zwraca liczbę opublikowanych wpisów.',
			'category'            => 'moja-wtyczka',
			'output_schema'       => array( 'type' => 'integer' ),
			'permission_callback' => function () {
				return current_user_can( 'edit_posts' );
			},
			'execute_callback'    => function () {
				return (int) wp_count_posts()->publish;
			},
			'meta'                => array(
				'show_in_rest' => true,
				'annotations'  => array( 'readonly' => true ),
			),
		) );
	} );
}

Denne abilityen tar ikke imot data, så den har ingen input_schema. Den returnerer en verdi, så output_schema er obligatorisk.

“Formatet skal være namespace/ability-name”

Make WordPress Core, Abilities API in WordPress 6.9, egen oversettelse

Navnet består av små bokstaver, tall, bindestreker og en skråstrek. Navnerommet er som regel slugen til utvidelsen, noe som hindrer kollisjoner mellom utvidelser som registrerer lignende operasjoner.

#input_schema og output_schema

Skjemaene er ikke pynt for dokumentasjonen. Kjernen validerer input mot dem før kjøring og output etter kjøring.

“Det er obligatorisk å definere skjemaer når det finnes en verdi som skal sendes inn eller returneres.”

Make WordPress Core, Abilities API in WordPress 6.9, egen oversettelse

Validatoren støtter ikke hele JSON Schema-spesifikasjonen:

“WordPress implementerer en validator basert på et delsett av JSON Schema versjon 4.”

Make WordPress Core, Abilities API in WordPress 6.9, egen oversettelse

I praksis betyr det å skrive skjemaene i draft 4-syntaks og være forsiktig med nøkkelord utenfor dette utvalget.

#permission_callback og execute_callback

Begge callbackene er påkrevd. Code Reference beskriver dem slik:

“Påkrevd. En callback-funksjon som sjekker tillatelser før kjøring.”

Code Reference, wp_register_ability(), egen oversettelse

“Påkrevd. En callback-funksjon som kjøres når abilityen blir kalt.”

Code Reference, wp_register_ability(), egen oversettelse

Tilgangs-callbacken ser de samme dataene som kjøre-callbacken, så den kan ta en avgjørelse ut fra konkret input, for eksempel bare tillate redigering av et innlegg brukeren selv er forfatter av:

“Den mottar samme inndata som execute-callbacken og må returnere en boolean eller WP_Error”

Code Reference, wp_register_ability(), egen oversettelse

#Feilhåndtering i execute_callback

En feil returneres som et objekt, ikke som et unntak eller et tomt resultat:

“Abilities bør håndtere feil på en kontrollert måte ved å returnere WP_Error-objekter:”

Make WordPress Core, Abilities API in WordPress 6.9, egen oversettelse

#Annotasjonene readonly, destructive og idempotent

Annotasjonene i meta.annotations beskriver hva slags operasjon det er. readonly betyr en ability som ikke endrer noe:

“Valgfri. Hvis true, endrer ikke abilityen omgivelsene sine.”

Code Reference, wp_register_ability(), egen oversettelse

De to andre annotasjonene er destructive og idempotent. De er ikke pynt: de styrer HTTP-metoden ved kall via REST, og en klient, for eksempel en KI-agent, kan bruke dem til å vurdere om operasjonen trygt kan gjentas.

Denne nettsiden kjører vår egen MCP-server, beskrevet i /.well-known/mcp/server-card.json, og den eksponerer bare lesende verktøy. Samme prinsipp fungerer for abilities, og passer godt for et lite team som vil komme i gang uten stor risiko: første versjon av en agentintegrasjon er abilities med readonly: true, kalt med GET. Skriveoperasjoner kommer senere, hver med sin egen permission_callback.

#REST-endepunkter i Abilities API

I WordPress 6.9 havner en ability ikke automatisk i REST API. Det må deklareres:

“Dette er mulig ved å sette argumentet meta.show_in_rest til true når en ability registreres.”

Make WordPress Core, Abilities API in WordPress 6.9, egen oversettelse

Endepunktene ligger i navnerommet wp-abilities/v1: liste over abilities, én enkelt ability og kjøring. Kjørestien ser slik ut:

GET|POST|DELETE /wp-abilities/v1/abilities/{name}/run

Kilde: Make WordPress Core, Abilities API in WordPress 6.9.

#Autentisering i Abilities API

“Tilgang til alle REST API-endepunkter for Abilities krever en autentisert bruker.”

Make WordPress Core, Abilities API in WordPress 6.9, egen oversettelse

Det gjelder også listen over abilities. Sesjonscookie, application passwords eller en egen autentiseringsmekanisme fungerer. En anonym klient får ikke engang se hvilke abilities som finnes på nettstedet.

#Slik kaller du en ability via REST

HTTP-metoden for endepunktet run bestemmes av annotasjonene. En readonly-ability kalles med GET, en ability som er både destructive og idempotent med DELETE, og i alle andre tilfeller:

“Alle andre tilfeller: bruker POST”

Jorge Costa, Make WordPress Core, Client-Side Abilities API in WordPress 7.0, egen oversettelse

REST-dokumentasjonen i prosjektets repo understreker at dette er et krav for skrivebeskyttede abilities, ikke en anbefaling:

”- Skrivebeskyttede abilities må bruke GET (readonly: true)”

GitHub, WordPress/abilities-api, docs/rest-api.md, egen oversettelse

Ved GET og DELETE sendes input ikke i forespørselens body, men i parameteren input som URL-kodet JSON.

#Abilities API i JavaScript

WordPress 7.0 la til en klient i nettleseren, fordelt på to pakker. @wordpress/abilities er selve lageret for abilities, mens @wordpress/core-abilities henter abilities registrert på serveren via REST:

“Dette laster både @wordpress/core-abilities og avhengigheten @wordpress/abilities, og henter og registrerer automatisk alle abilities fra serversiden.”

Jorge Costa, Make WordPress Core, Client-Side Abilities API in WordPress 7.0, egen oversettelse

Feil i JS-klienten har faste koder. Mislykket validering gir ability_invalid_input eller ability_invalid_output, og avvist tilgang:

“Hvis permission-callbacken returnerer false, kastes en feil med koden ability_permission_denied.”

Jorge Costa, Make WordPress Core, Client-Side Abilities API in WordPress 7.0, egen oversettelse

#Hva er nytt i Abilities API i WordPress 7.1

Lanseringsnyheten for 7.1 oppsummerer endringene i én setning:

“Abilities API bygger på infrastrukturen som ble introdusert i WordPress 6.9, med en filtrerbar kjøringslivssyklus, tilpasset validering og felles oppdagelse.”

WordPress News, WordPress 7.1 “Mary Lou”, egen oversettelse

#Flagget public i Abilities API

WordPress 7.1 innførte meta.public, et felles eksponeringsflagg for klienter. Det fyller ut show_in_rest, men en eksplisitt angitt show_in_rest går foran, og standardverdien er fortsatt false:

$show_in_rest = $meta['show_in_rest'] ?? $meta['public'] ?? false;

Kilde: Milana Cap, Make WordPress Core, A unified public exposure flag for Abilities in WordPress 7.1.

Flagget styrer synlighet, ikke tilgang:

“Flagget public styrer oppdagbarhet og eksponering mot klienter.”

Milana Cap, Make WordPress Core, A unified public exposure flag for Abilities in WordPress 7.1, egen oversettelse

En ability merket som offentlig går fortsatt gjennom permission_callback. Flagget public erstatter den ikke.

#Filtre for kjøringen av en ability

“Abilities API tilbød tidligere actionene wp_before_execute_ability og wp_after_execute_ability.”

Make WordPress Core, New execution lifecycle filters for the Abilities API in WordPress 7.1, egen oversettelse

I tillegg til disse to actionene fra 6.9 la versjon 7.1 til fire filtre:

FilterSteg i kjøringen
wp_pre_execute_abilityfør kjøring
wp_ability_normalize_inputnormalisering av input
wp_ability_permission_resultresultatet av tilgangssjekken
wp_ability_execute_resultresultatet av kjøringen

Actionene lot deg bare observere kjøringen. Filtrene lar deg gripe inn, for eksempel normalisere input eller endre resultatet av tilgangssjekken.

#Abilities API og MCP Adapter

Abilities API inneholder ingen Model Context Protocol-server. Den rollen har en egen pakke:

“Den offisielle WordPress-pakken for MCP-integrasjon, som eksponerer WordPress-abilities som Model Context Protocol (MCP)-verktøy, -ressurser og -prompter for AI-agenter.”

GitHub, WordPress/mcp-adapter, README, egen oversettelse

Standardinnstillingen er forsiktig:

“WordPress-abilities er private som standard.”

GitHub, WordPress/mcp-adapter, README, egen oversettelse

For at en ability skal være synlig for en MCP-klient, må meta.public (eller meta.mcp.public) settes til true. Adapterens standardserver eksponerer tre meta-verktøy som agenten bruker til å finne og kalle abilities. Tilkobling:

“Koble til via WP-CLI over STDIO, eller pek en HTTP-klient mot /wp-json/mcp/mcp-adapter-default-server.”

GitHub, WordPress/mcp-adapter, README, egen oversettelse

STDIO via WP-CLI passer for lokalt arbeid og staging, HTTP for en agent som kjører utenfor serveren. I begge tilfeller er det de samme permission_callback-ene og annotasjonene beskrevet ovenfor som avgjør hva agenten får lov til.

Mer om hvordan du kobler WordPress til KI-agenter via MCP, står i guiden MCP- og KI-integrasjon i WordPress. Trenger du en egen MCP-server eller et sett abilities tilpasset en bestemt nettbutikk eller tjeneste, har vi beskrevet det på siden utvikling av MCP-server for WordPress.

#Hvordan sjekke om WordPress støtter Abilities API

Enklest i koden: function_exists( 'wp_register_ability' ) returnerer true fra versjon 6.9. Fra utsiden, med en konto som har et application password, holder det å spørre etter navnerommet wp-abilities/v1 i nettstedets REST API. Finnes det ikke, kjører nettstedet en versjon eldre enn 6.9, eller noe blokkerer REST API. Listen viser bare abilities med show_in_rest eller public satt til true, så en tom liste betyr ikke at utvidelsene ikke registrerer noen abilities.

Sist verifisert mot kildene: 6. oktober 2026.

Anbefalinger fra LinkedIn

Anbefalinger og erfaringer fra samarbeid med WPPoland

Utvalgte anbefalinger fra ledere innen WordPress, WordCamp og e-handel - med vekt på leveranse i tide, teknisk dybde og forretningsorientert tilnærming til WordPress-utvikling.

Karolina Czapla

Karolina Czapla

Markedsstrateg, Performance & Digital Strategy

“Samarbeidet med Mariusz på WordCamp har vist meg hvor sjelden det er å kombinere dyp teknisk kompetanse med ekte lederskap. Han planlegger, koordinerer og leverer med presisjon, samtidig som han gir teamet rom til å voks...”

Medarrangør, WordCamp Gdynia 2024 & 2025

Anna Kamińska

Anna Kamińska

Talent Acquisition Specialist / HR People Partner

“Porteføljen til Mariusz taler for seg. Den viser presisjon, allsidighet og et sterkt ansvarsfølelse. Du kan stole på at han følger et prosjekt fra idé til levering og holder alle interessenter godt informert.”

Vi jobbet på samme team

Sarah‑Luisa Kwolek

Sarah‑Luisa Kwolek

IT‑prosjektleder & Product Owner, Web/App

“I over to år kunne jeg alltid stole på Mariusz for WordPress‑oppgaver, fra styling og templating til integrasjoner. Han skaper ro i teamet og sørger for at frontend‑delen er under kontroll.”

Mariusz var hennes kunde på WordPress‑prosjekter

Argert Boja

Argert Boja

Senior Full‑Stack‑utvikler

“Mariusz er lagkameraten alle ønsker seg: sterke full‑stack‑WordPress‑ferdigheter, klare forklaringer og en positiv holdning selv under press. Han beveger seg lett mellom plugins, ytelse og Gutenberg‑layouts uten å miste ...”

Vi jobbet sammen på WordPress‑prosjekter

Varun Patil

Varun Patil

Growth‑ & CRM‑ansvarlig

“I tillegg til utvikling forstår Mariusz SEO, analyse og growth. Han snakker direkte med interessenter, stiller de riktige spørsmålene og leverer løsninger som faktisk påvirker forretningsmål, fra AMP til tracking og ytel...”

Var leder for Mariusz på growth‑initiativer

Rafał Osiński

Rafał Osiński

Gründer @ EasyTrips.pl, Senior WordPress‑utvikler

“Jeg har kjent Mariusz gjennom WordPress‑miljøet i mange år. Han er pålitelig, svært engasjert og rett og slett alltid til stede, på meetups, WordCamps og i prosjekter. Hvis du vil ha et langsiktig samarbeid og noen som b...”

Medarrangør av WordUp Trójmiasto & WordCamp

Daniel Blossfeld

Daniel Blossfeld

Konsulent for prosessoptimalisering og digitalisering

“Jeg hadde gleden av å jobbe med Mariusz i nesten tre år. I løpet av den tiden viste hans WordPress-utviklingsferdigheter seg å være uvurderlige i en rekke prosjekter, fra nettstedbygging til online medlemsområder og til ...”

Mariusz var hans kunde på WordPress‑prosjekter

Natalie Wiszczor

Natalie Wiszczor

CRM & E-postmarkedsføringsansvarlig

“Jeg hadde gleden av å jobbe med Mariusz i over 4 år innen det tekniske feltet. I løpet av denne tiden viste han seg å være en kompetent og pålitelig kollega. Det som spesielt utmerket seg var hans vennlige natur og hans ...”

Jobbet med Mariusz i forskjellige team

Mark Chalklen

Mark Chalklen

Head of Design & Build hos Itineris Limited

“Mariusz er et flott teammedlem, alltid glad for å ta fatt på enhver oppgave og lære nye ting. En flott kommunikator og en gjennomgående hyggelig fyr å jobbe med. Vanskelig å slå på vår ukentlige Strava-ledertavle!”

Ledet Mariusz direkte

Jessica Di Pasquale

Jessica Di Pasquale

Leder SEO-initiativer med datadrevne vekststrategier.

“Mariusz er en veldig dyktig, tålmodig og ekspert fyr. Alltid klar til å hjelpe og fikse feil, jeg satte stor pris på å jobbe med ham. Han er en så flott kollega!”

Ledet Mariusz direkte

Biki John

Biki John

Innholdsmarkedsføringsentusiast og SEO-entusiast

“Det var flott å jobbe med Mariusz. Jeg satte stor pris på hans omfattende kunnskap om WordPress og hvordan det kom godt med når jeg trengte støtte til å navigere i CMS. Jeg roser Mariusz fullt ut for hans tålmodighet, go...”

Jobbet med Mariusz i forskjellige team

Rafal Borowiec

Rafal Borowiec

Programvareutvikler, konsulent, leder og foreleser

“Jeg hadde muligheten til å jobbe med Mariusz i 7 måneder. Han utmerker seg innen teknisk optimalisering for søkemotorer (SEO). Mariusz har også sterk ekspertise innen AMP-utvikling, GTM og GA. Mariusz føler seg veldig ko...”

Ledet Mariusz direkte

Belinda Koch

Belinda Koch

Web-sporingsanalytiker hos TUI

“Mariusz er en flott person å jobbe med. Han er ekstremt motivert til å lære nye ting og dele sin kunnskap, og er svært kunnskapsrik innenfor et bredt spekter av emner. Vi jobbet sammen med digitale analyse- og sporingsem...”

Jobbet med Mariusz om digital analyse og sporing

Ali Nezamolmaleki

Ali Nezamolmaleki

Vekst, SEO, Analytisk tenkning, AMP

“Mariusz er en ekstremt talentfull person innen sitt fagfelt. Han er alltid i stand til å gi et nytt perspektiv for å løse problemer og tenke utenfor boksen i situasjoner der alt ser ut til å være låst. Det er alltid en g...”

Jobbet med Mariusz i samme team

Karol Jakubcewicz

Karol Jakubcewicz

Front-end / JavaScript-utvikler

“Mariusz er en utrolig erfaren WordPress-utvikler og SEO/SEM-spesialist som jeg har hatt gleden av å jobbe med i nesten to år. Han var en av nøkkelpersonene med ansvar for konstant forbedring av lastetid og siderangering....”

Jobbet med Mariusz i samme team

Paweł Lewczuk

Paweł Lewczuk

Front-end-utvikler, WordPress-utvikler

“Jeg samarbeidet med Mariusz på flere prosjekter, og samarbeidet vårt var alltid eksemplarisk. Jeg tror det ligger mange flere felles prosjekter foran oss. Anbefales på det sterkeste!”

Mariusz var Pawels kunde

Przemek Wroblewski

Przemek Wroblewski

Programvareutvikler med over 20 års erfaring

“Jeg fant Mariusz som en person med stor ekspertise og dyp kunnskap om frontend-løsninger. En kraftig, kunnskapsrik og ansvarlig WordPress-utvikler. Han har lett for å bygge mellommenneskelige relasjoner. Han hadde visjon...”

Jobbet med Mariusz i forskjellige team

Tjeneste-FAQ

Ofte stilte spørsmål

Spørsmål om omfang, levering, pris og kvalitet.

SEO-readyGEO-readyAEO-ready5 Q&A
Hva er Abilities API i WordPress?#
Et register over funksjoner som en utvidelse, et tema eller kjernen gjør tilgjengelig i en standardisert form. Hver ability har et navn med navnerom, en kategori, et skjema for input og output, en tilgangs-callback og en kjøre-callback. Dermed ser PHP, JavaScript, REST API og KI-agenter via MCP Adapter de samme operasjonene i samme form.
Hvilken WordPress-versjon har Abilities API?#
WordPress 6.9, som kom ut 2. desember 2025. WordPress 7.0 la til en JavaScript-klient, og WordPress 7.1 flagget public og filtre for kjøringen. En utvidelse som også skal fungere på eldre installasjoner, bør pakke registreringen inn i betingelsen function_exists( 'wp_register_ability' ).
Blir en ability automatisk tilgjengelig i REST API?#
Nei. I WordPress 6.9 må meta.show_in_rest settes til true. Fra 7.1 kan du også sette meta.public, som fyller ut show_in_rest med mindre show_in_rest er angitt eksplisitt. Begge er av som standard, og hvert kall til endepunktet wp-abilities/v1 krever en innlogget bruker.
Hvordan kaller man en ability via REST API?#
Via endepunktet /wp-abilities/v1/abilities/{name}/run. Annotasjonene bestemmer metoden: en readonly-ability kalles med GET, en ability som er både destructive og idempotent med DELETE, og alle andre med POST. Ved GET og DELETE sendes input i parameteren input som URL-kodet JSON.
Er Abilities API det samme som MCP?#
Nei. Abilities API er et register i WordPress-kjernen. Model Context Protocol håndteres av en egen, offisiell pakke, MCP Adapter, som eksponerer abilities som MCP-verktøy, ressurser og prompter. Der er abilities private som standard og må merkes som offentlige.

Trenger du FAQ tilpasset bransje og marked? Vi lager en versjon som støtter dine forretningsmål.

Ta kontakt

Relaterte artikler

Hvorfor AI-agenter ikke velger WordPress

Stadig oftere er det en agent som velger plattform ut fra treningsdataene sine. Andy Peatling og Brian Coords mener at WordPress taper på dette. Våre data fra Search Console viser hvordan promptene som tar denne avgjørelsen ser ut, og hvor de havner.