---
title: "WordPress Abilities API : guide développeur,  partikuls"
description: "Découvrez l'Abilities API de WordPress 6.9 : comment enregistrer des abilities, les exposer via REST API et intégrer votre site avec des agents IA grâce au protocole MCP."
url: https://www.partikuls.com/fr/ressources/wordpress-abilities-api/
lang: fr
---

WordPress3 février 20269 min de lecture

# WordPress Abilities API : le guide complet pour développeurs

Découvrez l'Abilities API de WordPress 6.9 : comment enregistrer des abilities, les exposer via REST API et intégrer votre site avec des agents IA grâce au protocole MCP.

Publié par [Partikuls](https://www.partikuls.com/fr/agence/)

## Introduction

Avec la sortie de WordPress 6.9 “Gene” en décembre 2025, l’écosystème WordPress franchit une étape majeure dans son évolution. Parmi les nombreuses nouveautés de cette version, l’**Abilities API** se distingue comme l’une des fonctionnalités les plus prometteuses pour les développeurs. Cette nouvelle API ouvre la voie à une intégration native avec les systèmes d’intelligence artificielle et révolutionne la façon dont les plugins, thèmes et le cœur de WordPress exposent leurs fonctionnalités.

L’Abilities API n’est pas simplement une nouvelle couche d’abstraction. Elle représente un changement de paradigme dans la conception des extensions WordPress. Désormais, chaque fonctionnalité peut être déclarée de manière standardisée, documentée automatiquement et rendue accessible à des systèmes externes, qu’il s’agisse d’outils d’automatisation ou d’agents IA conversationnels.

Dans ce guide complet, nous allons explorer en profondeur cette nouvelle API : ses concepts fondamentaux, son implémentation pratique et son intégration avec le protocole Model Context Protocol (MCP). Que vous soyez développeur de plugins ou intégrateur WordPress, vous découvrirez comment tirer parti de cette technologie pour créer des solutions plus intelligentes et interconnectées.

## Qu’est-ce que l’Abilities API ?

### Définition et concepts clés

L’Abilities API est un système de registre centralisé qui permet d’enregistrer et de découvrir des unités de fonctionnalité distinctes au sein d’un site WordPress. Concrètement, une **Ability** (ou “capacité” en français) représente une action ou une fonctionnalité spécifique que votre site peut accomplir.

Chaque Ability est caractérisée par plusieurs éléments essentiels :

-   **Un nom unique** suivant le format `namespace/ability-name`
-   **Un label et une description** lisibles par les humains
-   **Un schéma d’entrée** définissant les paramètres attendus (format JSON Schema)
-   **Un schéma de sortie** décrivant la structure du résultat retourné
-   **Une catégorie** pour organiser les abilities connexes
-   **Un callback d’exécution** qui contient la logique métier
-   **Un callback de permission** pour contrôler l’accès

Cette structure rigoureuse offre plusieurs avantages majeurs. Elle permet une validation automatique des données, une documentation autogénérée et une interopérabilité native avec des systèmes externes.

### Architecture du système

L’Abilities API repose sur deux classes centrales qui fonctionnent comme des registres singleton :

**WP\_Abilities\_Registry** gère l’ensemble des abilities enregistrées. Ce registre fournit des méthodes pour ajouter, supprimer, rechercher et interroger les abilities disponibles sur le site.

**WP\_Abilities\_Category\_Registry** organise les abilities en catégories logiques. Chaque ability doit appartenir à exactement une catégorie, ce qui facilite la navigation et la découverte des fonctionnalités.

Cette architecture garantit une cohérence dans tout l’écosystème. Que vous développiez un plugin e-commerce, un outil de SEO ou une extension de sécurité, vous utilisez les mêmes conventions et les mêmes mécanismes pour exposer vos fonctionnalités.

### Objectifs de conception

L’équipe WordPress Core AI a défini quatre objectifs principaux lors de la conception de cette API :

1.  **Découvrabilité** : Toutes les abilities peuvent être listées, interrogées et inspectées via des interfaces standardisées.
    
2.  **Interopérabilité** : Un schéma uniforme permet à différents composants de fonctionner ensemble de manière transparente.
    
3.  **Sécurité prioritaire** : Des contrôles de permission explicites déterminent qui peut invoquer chaque ability.
    
4.  **Adoption progressive** : L’API est disponible comme package Composer avant son intégration dans le cœur de WordPress.
    

## Pourquoi utiliser l’Abilities API ?

### Les limitations de l’approche traditionnelle

Avant l’Abilities API, les développeurs WordPress devaient créer manuellement des endpoints REST, des shortcodes, des hooks et des fonctions pour exposer leurs fonctionnalités. Cette approche fragmentée posait plusieurs problèmes :

-   **Manque de standardisation** : Chaque plugin définissait ses propres conventions
-   **Documentation manuelle** : Les développeurs devaient documenter chaque API séparément
-   **Validation ad hoc** : La vérification des entrées/sorties était laissée à la discrétion de chacun
-   **Découverte difficile** : Aucun moyen centralisé de connaître les fonctionnalités d’un site

L’Abilities API résout ces problèmes en proposant un cadre unifié et cohérent.

### Avantages pour les développeurs

**Standardisation du code** : En adoptant l’Abilities API, vous suivez des conventions établies. Votre code devient plus lisible et maintenable. Les autres développeurs comprennent immédiatement la structure de vos fonctionnalités.

**Validation automatique** : Les schémas JSON assurent que les données entrantes et sortantes respectent le format attendu. Plus besoin d’écrire des validations manuelles répétitives.

**Documentation intégrée** : Chaque ability s’autodocumente grâce à ses labels, descriptions et schémas. Les outils peuvent générer automatiquement une documentation technique.

**Exposition multicanale** : Une ability enregistrée peut être appelée depuis PHP, JavaScript ou l’API REST sans code supplémentaire.

### Cas d’usage concrets

L’Abilities API trouve sa place dans de nombreux scénarios :

-   **Plugins de contenu** : Exposer des fonctions de création, modification et suppression d’articles
-   **Extensions e-commerce** : Rendre accessibles les opérations de gestion de produits et commandes
-   **Outils de SEO** : Permettre l’analyse et l’optimisation automatisées du contenu
-   **Systèmes de formulaires** : Automatiser le traitement et l’export des soumissions
-   **Intégrations tierces** : Connecter WordPress à des services externes de manière standardisée

## Comment enregistrer une Ability

### Étape 1 : Enregistrer une catégorie

Avant de créer une ability, vous devez définir la catégorie à laquelle elle appartiendra. Les catégories organisent les abilities de manière logique et facilitent leur découverte.

Utilisez le hook `wp_abilities_api_categories_init` pour enregistrer vos catégories :

```
add_action( 'wp_abilities_api_categories_init', 'mon_plugin_register_categories' );

function mon_plugin_register_categories(): void {
    wp_register_ability_category(
        'gestion-contenu',
        array(
            'label'       => __( 'Gestion de Contenu', 'mon-plugin' ),
            'description' => __( 'Abilities pour créer, modifier et gérer le contenu du site.', 'mon-plugin' ),
        )
    );
}
```

Le slug de catégorie doit être unique et utiliser uniquement des caractères alphanumériques minuscules et des tirets.

### Étape 2 : Définir le schéma d’entrée

Le schéma d’entrée (`input_schema`) décrit les paramètres que votre ability accepte. WordPress implémente un validateur basé sur la spécification JSON Schema Version 4.

Voici un exemple de schéma pour une ability d’analyse de texte :

```
'input_schema' => array(
    'type'       => 'object',
    'properties' => array(
        'texte' => array(
            'type'        => 'string',
            'description' => __( 'Le texte à analyser.', 'mon-plugin' ),
            'minLength'   => 10,
            'maxLength'   => 5000,
        ),
        'langue' => array(
            'type'        => 'string',
            'description' => __( 'Code de langue ISO 639-1.', 'mon-plugin' ),
            'enum'        => array( 'fr', 'en', 'es', 'de' ),
            'default'     => 'fr',
        ),
    ),
    'required' => array( 'texte' ),
),
```

### Étape 3 : Définir le schéma de sortie

Le schéma de sortie (`output_schema`) décrit la structure du résultat retourné par votre ability :

```
'output_schema' => array(
    'type'       => 'object',
    'properties' => array(
        'sentiment' => array(
            'type'        => 'string',
            'description' => __( 'Résultat de l\'analyse de sentiment.', 'mon-plugin' ),
            'enum'        => array( 'positif', 'négatif', 'neutre' ),
        ),
        'score' => array(
            'type'        => 'number',
            'description' => __( 'Score de confiance entre 0 et 1.', 'mon-plugin' ),
            'minimum'     => 0,
            'maximum'     => 1,
        ),
        'mots_cles' => array(
            'type'        => 'array',
            'items'       => array( 'type' => 'string' ),
            'description' => __( 'Liste des mots-clés extraits.', 'mon-plugin' ),
        ),
    ),
),
```

### Étape 4 : Créer le callback d’exécution

Le callback d’exécution contient la logique métier de votre ability. Il reçoit les paramètres d’entrée validés et doit retourner un résultat conforme au schéma de sortie :

```
function mon_plugin_analyser_texte( array $input ): array {
    $texte  = $input['texte'];
    $langue = $input['langue'] ?? 'fr';

    // Logique d'analyse (exemple simplifié)
    $mots      = str_word_count( $texte, 1 );
    $mots_cles = array_unique( array_filter( $mots, function( $mot ) {
        return strlen( $mot ) > 5;
    } ) );

    // Analyse de sentiment fictive
    $sentiment = 'neutre';
    $score     = 0.5;

    if ( preg_match( '/excellent|parfait|génial|super/i', $texte ) ) {
        $sentiment = 'positif';
        $score     = 0.85;
    } elseif ( preg_match( '/mauvais|terrible|nul|décevant/i', $texte ) ) {
        $sentiment = 'négatif';
        $score     = 0.75;
    }

    return array(
        'sentiment' => $sentiment,
        'score'     => $score,
        'mots_cles' => array_values( array_slice( $mots_cles, 0, 10 ) ),
    );
}
```

### Étape 5 : Enregistrer l’ability complète

Assemblez tous les éléments pour enregistrer votre ability :

```
add_action( 'wp_abilities_api_init', 'mon_plugin_register_abilities' );

function mon_plugin_register_abilities(): void {
    wp_register_ability(
        'mon-plugin/analyser-texte',
        array(
            'label'       => __( 'Analyser un Texte', 'mon-plugin' ),
            'description' => __( 'Analyse le sentiment et extrait les mots-clés d\'un texte.', 'mon-plugin' ),
            'category'    => 'gestion-contenu',
            'input_schema' => array(
                'type'       => 'object',
                'properties' => array(
                    'texte' => array(
                        'type'        => 'string',
                        'description' => __( 'Le texte à analyser.', 'mon-plugin' ),
                        'minLength'   => 10,
                    ),
                    'langue' => array(
                        'type'    => 'string',
                        'enum'    => array( 'fr', 'en', 'es', 'de' ),
                        'default' => 'fr',
                    ),
                ),
                'required' => array( 'texte' ),
            ),
            'output_schema' => array(
                'type'       => 'object',
                'properties' => array(
                    'sentiment' => array(
                        'type' => 'string',
                        'enum' => array( 'positif', 'négatif', 'neutre' ),
                    ),
                    'score' => array(
                        'type'    => 'number',
                        'minimum' => 0,
                        'maximum' => 1,
                    ),
                    'mots_cles' => array(
                        'type'  => 'array',
                        'items' => array( 'type' => 'string' ),
                    ),
                ),
            ),
            'execute_callback'    => 'mon_plugin_analyser_texte',
            'permission_callback' => function() {
                return current_user_can( 'edit_posts' );
            },
            'meta' => array(
                'show_in_rest' => true,
            ),
        )
    );
}
```

## Les endpoints REST API

### Vue d’ensemble des routes disponibles

Lorsque vous activez l’option `show_in_rest`, vos abilities deviennent accessibles via l’API REST sous le namespace `wp-abilities/v1`. Voici les endpoints disponibles :

Route

Méthode

Description

`/wp-abilities/v1/abilities`

GET

Liste toutes les abilities

`/wp-abilities/v1/abilities/{name}`

GET

Récupère une ability spécifique

`/wp-abilities/v1/abilities/{name}/run`

GET/POST/DELETE

Exécute une ability

`/wp-abilities/v1/categories`

GET

Liste toutes les catégories

`/wp-abilities/v1/categories/{slug}`

GET

Récupère une catégorie spécifique

### Authentification requise

L’accès aux endpoints de l’Abilities API nécessite une authentification. WordPress supporte plusieurs méthodes :

-   **Cookies d’authentification** : Pour les appels depuis le navigateur
-   **Application Passwords** : Recommandé pour les accès externes
-   **Plugins d’authentification** : OAuth, JWT, etc.

### Exécuter une ability via REST

Pour exécuter une ability, envoyez une requête vers l’endpoint `/run` :

```
# Avec curl et Application Password
curl -X POST \
  https://monsite.com/wp-json/wp-abilities/v1/abilities/mon-plugin/analyser-texte/run \
  -H "Authorization: Basic $(echo -n 'utilisateur:mot_de_passe_application' | base64)" \
  -H "Content-Type: application/json" \
  -d '{"texte": "Cet article WordPress est vraiment excellent et très utile."}'
```

La réponse sera conforme au schéma de sortie défini :

```
{
  "sentiment": "positif",
  "score": 0.85,
  "mots_cles": ["article", "WordPress", "vraiment", "excellent"]
}
```

### Gestion des erreurs

L’API retourne des codes d’erreur standardisés :

-   `ability_invalid_permissions` : L’utilisateur n’a pas les droits requis
-   `ability_invalid_input` : Les données d’entrée ne respectent pas le schéma
-   `ability_not_found` : L’ability demandée n’existe pas
-   `ability_execution_error` : Une erreur s’est produite lors de l’exécution

## Intégration avec l’IA et le protocole MCP

### Le Model Context Protocol (MCP)

Le Model Context Protocol est un standard ouvert créé par Anthropic (les créateurs de Claude) et adopté par OpenAI, Google DeepMind et d’autres leaders de l’IA. Ce protocole fournit un moyen universel pour les assistants IA de se connecter à des outils externes, des sources de données et des workflows.

L’équipe WordPress a développé un **MCP Adapter** qui fait le pont entre l’Abilities API et le protocole MCP. Cette intégration permet aux agents IA de découvrir et d’exécuter les fonctionnalités de votre site WordPress de manière conversationnelle.

### Installation du MCP Adapter

Le MCP Adapter est disponible comme plugin WordPress ou package Composer :

```
# Via Composer
composer require wordpress/mcp-adapter

# Ou téléchargez le plugin depuis
# https://github.com/WordPress/mcp-adapter/releases
```

Une fois installé, l’adapter expose automatiquement vos abilities enregistrées aux clients MCP.

### Fonctionnement de l’intégration

Le MCP Adapter :

1.  **Convertit** les abilities WordPress en outils MCP (tools, resources, prompts)
2.  **Respecte** les callbacks de permission définis dans vos abilities
3.  **Supporte** les transports HTTP et STDIO
4.  **Permet** la création de plusieurs serveurs MCP avec des configurations différentes

Cette architecture garantit que les agents IA ne peuvent exécuter que les actions pour lesquelles l’utilisateur est autorisé.

### Cas d’usage avec l’IA

L’intégration Abilities API + MCP ouvre des possibilités puissantes :

-   **Gestion conversationnelle** : “Crée un nouvel article sur les tendances SEO 2026”
-   **Automatisation intelligente** : Un agent IA peut enchaîner plusieurs abilities pour accomplir des tâches complexes
-   **Analyse de données** : “Analyse les performances de mes 10 derniers articles”
-   **Workflows cross-systèmes** : Connecter WordPress à d’autres outils via des agents IA unifiés

### Exemple de configuration MCP

Pour exposer une ability à un agent IA Claude via le MCP Adapter, aucune configuration supplémentaire n’est nécessaire si `show_in_rest` est activé. L’adapter détecte automatiquement les abilities disponibles et les rend accessibles.

## Bonnes pratiques et erreurs à éviter

### Conventions de nommage

Respectez toujours le format `namespace/ability-name` pour vos abilities. Le namespace devrait correspondre au slug de votre plugin ou thème. Utilisez uniquement des caractères alphanumériques minuscules, des tirets et des slashes.

**Bon** : `mon-plugin/creer-article`, `theme-pro/generer-sitemap`

**Mauvais** : `CreateArticle`, `mon_plugin_ability`, `MonPlugin/Action`

### Sécurité des permissions

Définissez toujours un `permission_callback` explicite. Ne vous contentez pas de retourner `true`. Utilisez les capabilities WordPress existantes comme `edit_posts`, `manage_options`, etc.

```
// Bon
'permission_callback' => function() {
    return current_user_can( 'edit_posts' );
},

// Mauvais - ne faites jamais ça
'permission_callback' => '__return_true',
```

### Schémas complets

Définissez des schémas d’entrée et de sortie détaillés. Plus vos schémas sont précis, meilleure sera la validation automatique et la documentation générée.

Incluez systématiquement :

-   Les types de données (`string`, `number`, `array`, `object`)
-   Les descriptions explicatives
-   Les contraintes (`minLength`, `maximum`, `enum`, etc.)
-   Les champs requis

### Gestion des erreurs dans les callbacks

Votre callback d’exécution doit gérer les erreurs proprement. Retournez un `WP_Error` en cas de problème :

```
function mon_callback( array $input ): array|WP_Error {
    try {
        // Logique métier
        $resultat = effectuer_operation( $input );
        return $resultat;
    } catch ( Exception $e ) {
        return new WP_Error(
            'execution_failed',
            $e->getMessage(),
            array( 'status' => 500 )
        );
    }
}
```

### Performance et mise en cache

Pour les abilities qui effectuent des opérations coûteuses, implémentez une stratégie de cache :

```
function mon_ability_avec_cache( array $input ): array {
    $cache_key = 'ability_result_' . md5( wp_json_encode( $input ) );
    $cached    = wp_cache_get( $cache_key, 'abilities' );

    if ( false !== $cached ) {
        return $cached;
    }

    $resultat = effectuer_operation_couteuse( $input );
    wp_cache_set( $cache_key, $resultat, 'abilities', HOUR_IN_SECONDS );

    return $resultat;
}
```

## Conclusion

L’Abilities API représente une avancée majeure dans l’écosystème WordPress. En standardisant la façon dont les fonctionnalités sont déclarées et exposées, cette API facilite la création de plugins plus interopérables, mieux documentés et prêts pour l’ère de l’intelligence artificielle.

L’intégration native avec le protocole MCP ouvre des perspectives passionnantes. Les sites WordPress peuvent désormais interagir avec des agents IA conversationnels, automatiser des workflows complexes et s’intégrer de façon fluide dans des écosystèmes multi-outils.

Pour les développeurs, l’adoption de l’Abilities API n’est plus optionnelle mais essentielle. Les utilisateurs attendent des plugins qui fonctionnent de manière cohérente et qui peuvent être pilotés par des assistants IA. En maîtrisant cette technologie dès aujourd’hui, vous positionnez vos projets pour le futur de WordPress.

Prêt à intégrer l’Abilities API dans vos plugins ? L’équipe Partikuls peut vous accompagner dans cette transition et vous aider à créer des solutions WordPress intelligentes et connectées. [Contactez-nous](https://www.partikuls.com/fr/contact/) pour discuter de votre projet.

* * *

## Sources et références

-   [Documentation officielle Abilities API](https://developer.wordpress.org/apis/abilities-api/)
-   [Introducing the WordPress Abilities API - WordPress Developer Blog](https://developer.wordpress.org/news/2025/11/introducing-the-wordpress-abilities-api/)
-   [Abilities API in WordPress 6.9 - Make WordPress Core](https://make.wordpress.org/core/2025/11/10/abilities-api-in-wordpress-6-9/)
-   [Repository GitHub WordPress Abilities API](https://github.com/WordPress/abilities-api)
-   [MCP Adapter for WordPress](https://github.com/WordPress/mcp-adapter)
-   [WordPress 6.9: What’s New for Developers](https://wordpress.com/blog/2025/12/03/wordpress-6-9-new-for-developers/)

## Pour votre entreprise

-   [Ingénierie IA](https://www.partikuls.com/fr/ingenierie-ia/)

Sommaire

Un projet IA en tête ?

On vous conseille gratuitement, sans filtre ni blabla.

[Parlons-en→](https://www.partikuls.com/fr/ressources/wordpress-abilities-api/#contact)

## À lire ensuite

[WordPress Agents IA dans WordPress : Abilities API et MCP transforment votre site en plateforme intelligente](https://www.partikuls.com/fr/ressources/wordpress-agents-ia-abilities-api-mcp/)[WordPress wp-playground : la compétence IA qui révolutionne le test de plugins et thèmes](https://www.partikuls.com/fr/ressources/wp-playground-skill-ia/)[WordPress Développer des thèmes blocs WordPress sans coder, avec Playground et GitHub](https://www.partikuls.com/fr/ressources/themes-blocs-wordpress-playground-github/)

## Parlez-nous de votre projet.

C’est gratuit et sans engagement. Nous vous conseillons sans filtre ni bullshit.  
On vous répond en 8 h !

[Contactez-nous](https://www.partikuls.com/fr/ressources/wordpress-abilities-api/#contact-form)
