Mettre à jour vos champs SEO Rank Math avec n8n

Par défaut, Rank Math n’expose pas ses champs SEO additionnels (tels que SEO Title, SEO Description, et Canonical URL) via l’API REST de WordPress. Cette limitation rend impossible la modification programmatique de ces champs – un inconvénient significatif lorsque vous avez besoin de mettre en œuvre des stratégies SEO automatisées, que ce soit pour des types de contenu non standard (au-delà des articles typiques) ou pour des produits WooCommerce.

Cette documentation explique comment surmonter cette limitation en installant un plugin personnalisé qui crée un point de terminaison API dédié. Avec ce point de terminaison en place, vous pouvez utiliser n8n pour mettre à jour vos champs Rank Math automatiquement, en veillant à ce que vos données SEO restent à jour même dans les flux de travail automatisés en dehors des environnements typiques de presse ou de WooCommerce.

L’astuce consiste à créer un plugin WordPress spécial qui va étendre l’API REST de WordPress en y ajoutant les informations importantes de Rank Math telles que le titre SEO, la description et l’URL canonique. Par défaut, ces champs ne sont pas modifiables via l’API REST, mais grâce à ce plugin, vous débloquez la possibilité de les mettre à jour de manière automatisée avec des outils comme n8n, ce qui est essentiel pour les stratégies SEO avancées.

Plugin WordPress Rankmath API

Nous allons créer un plugin personnalisé qui expose une nouvelle route REST permettant de mettre à jour les métadonnées SEO de Rank Math.

Je suis parti de cette version que j’ai étendue grâce à chatGPT et à une discussion sur le channel de No Code Skills de Jérémy DE CAMPOS (mention à Recreabox 😏).

Créez un fichier PHP (par exemple rank-math-api-manager-extended-v1.3.php), le compresser en zip et ensuite faire ajout nouveau plugin.

<?php
/**
 * Plugin Name: Rank Math API Manager Extended v1.3
 * Description: Manages the update of Rank Math metadata (SEO Title, SEO Description, Canonical URL) via the REST API for WordPress posts and WooCommerce products.
 * Version: 1.3
 * Author: Phil - https://inforeole.fr
 */

if ( ! defined( 'ABSPATH' ) ) {
    exit; // Exit if accessed directly.
}

class Rank_Math_API_Manager_Extended {
    public function __construct() {
        add_action('rest_api_init', [$this, 'register_meta_fields']);
        add_action('rest_api_init', [$this, 'register_api_routes']);
    }

    /**
     * Registers the Rank Math meta fields in the REST API for posts and products (if WooCommerce is active).
     */
    public function register_meta_fields() {
        $meta_fields = [
            'rank_math_title'         => 'SEO Title',
            'rank_math_description'   => 'SEO Description',
            'rank_math_canonical_url' => 'Canonical URL'
        ];

        // Register meta for posts by default.
        $post_types = ['post'];

        // If WooCommerce is active, add the 'product' post type.
        if ( class_exists('WooCommerce') ) {
            $post_types[] = 'product';
        }

        foreach ( $post_types as $post_type ) {
            foreach ( $meta_fields as $key => $description ) {
                register_post_meta( $post_type, $key, [
                    'show_in_rest'   => true,
                    'single'         => true,
                    'type'           => 'string',
                    'auth_callback'  => [$this, 'check_update_permission'],
                    'description'    => $description,
                ] );
            }
        }
    }

    /**
     * Registers the REST API route to update Rank Math meta fields.
     */
    public function register_api_routes() {
        register_rest_route( 'rank-math-api/v1', '/update-meta', [
            'methods'             => 'POST',
            'callback'            => [$this, 'update_rank_math_meta'],
            'permission_callback' => [$this, 'check_update_permission'],
            'args'                => [
                'post_id' => [
                    'required'          => true,
                    'validate_callback' => function( $param ) {
                        return is_numeric( $param ) && get_post( $param );
                    }
                ],
                'rank_math_title' => [
                    'type'              => 'string',
                    'sanitize_callback' => 'sanitize_text_field',
                ],
                'rank_math_description' => [
                    'type'              => 'string',
                    'sanitize_callback' => 'sanitize_text_field',
                ],
                'rank_math_canonical_url' => [
                    'type'              => 'string',
                    'sanitize_callback' => 'esc_url_raw',
                ],
            ],
        ] );
    }

    /**
     * Updates the Rank Math meta fields via the REST API.
     */
    public function update_rank_math_meta( WP_REST_Request $request ) {
        $post_id = $request->get_param( 'post_id' );
        $fields  = ['rank_math_title', 'rank_math_description', 'rank_math_canonical_url'];
        $result  = [];

        foreach ( $fields as $field ) {
            $value = $request->get_param( $field );
            if ( $value !== null ) {
                $update_result = update_post_meta( $post_id, $field, $value );
                $result[ $field ] = $update_result ? 'updated' : 'failed';
            }
        }

        if ( empty( $result ) ) {
            return new WP_Error( 'no_update', 'No metadata was updated', ['status' => 400] );
        }

        return new WP_REST_Response( $result, 200 );
    }

    /**
     * Checks if the current user has permission to update the meta fields.
     */
    public function check_update_permission() {
        return current_user_can( 'edit_posts' );
    }
}

new Rank_Math_API_Manager_Extended();

3. Activer le plugin

  • Rendez-vous dans le tableau de bord WordPress > Extensions.
  • Activez le plugin Rank Math API Manager Extended v1.3.

Workflow n8n

⚠️ si vous aviez déjà des credentials pour le WordPress que vous souhaitez mettre à jour, pensez bien à recréer votre clé API pour qu’elle prenne en compte la nouvel API

HTTP request

Dépannage

Erreur d’authentification

Si vous obtenez une erreur de type « invalid_username » ou « Authorization failed », vérifiez que :

  • Vous avez bien utilisé un password applicatif.
  • Vos identifiants (nom d’utilisateur et mot de passe ou clés API) sont corrects.
  • Le plugin de Basic Auth est installé (si vous utilisez l’authentification Basic).
  • Vous avez recréé les credentials après modification de l’API.
  • Qu’un plugin de sécu (ex. Worfence) bloque pas les password applicatifs.

Endpoint non accessible

Si l’URL https://your-domain.com/wp-json/rank-math-api/v1/update-meta ne répond pas :

• Assurez-vous que le plugin est activé.

• Vérifiez l’URL et testez-la avec cURL ou Postman.

Mise à jour incorrecte

Si les champs ne se mettent pas à jour :

• Vérifiez que le post_id correspond à un article ou produit existant.

• Assurez-vous que les paramètres sont correctement transmis et validés via l’API REST.

Publications similaires