aiwoocommerce.nl Gratis Woo AI-audit
hookswordpresswoocommerce

WordPress hooks + AI: 4 slimme use-cases voor je WooCommerce-shop

Met action en filter hooks koppel je AI direct aan WooCommerce — zonder externe automatisering. Vier concrete use-cases met code-snippets.

Max van Kuik

WordPress is groot geworden door zijn hooks: add_action() en add_filter(). Voor een WooCommerce-shopeigenaar betekent dat je AI rechtstreeks in je shop kunt prikken — geen aparte automatiseringstool nodig, geen Zapier-licentie, geen wachtende n8n-instance.

Dit artikel laat vier use-cases zien waar een paar regels PHP + één AI-call al een serieus verschil maken. Snippets staan erbij; je kan ze plakken in functions.php van een child-theme of in een mu-plugin onder wp-content/mu-plugins/.

Veiligheidsnetje: test alles eerst op staging. AI-calls tijdens een hook zijn synchroon — als de AI traag is, kruipt je checkout. Voor zwaardere taken: trigger via wp-cron of off-load via Action Scheduler.

Setup: één keer een AI-helper maken

Plaats dit in een mu-plugin (wp-content/mu-plugins/aiwoo-helpers.php):

<?php
function aiwoo_call_openai( $prompt, $model = 'gpt-4o-mini' ) {
    $api_key = defined( 'OPENAI_API_KEY' ) ? OPENAI_API_KEY : '';
    if ( ! $api_key ) return new WP_Error( 'no_key', 'OPENAI_API_KEY mist in wp-config.php' );

    $response = wp_remote_post( 'https://api.openai.com/v1/chat/completions', [
        'timeout' => 20,
        'headers' => [
            'Authorization' => 'Bearer ' . $api_key,
            'Content-Type'  => 'application/json',
        ],
        'body' => wp_json_encode( [
            'model'    => $model,
            'messages' => [ [ 'role' => 'user', 'content' => $prompt ] ],
        ] ),
    ] );

    if ( is_wp_error( $response ) ) return $response;
    $body = json_decode( wp_remote_retrieve_body( $response ), true );
    return $body['choices'][0]['message']['content'] ?? '';
}

Sleutel zelf in wp-config.php: define( 'OPENAI_API_KEY', 'sk-...' );. Niet in code committen.

Met deze helper zijn de use-cases een paar regels per stuk.

Use-case 1 — AI-concept-antwoord bij elke nieuwe order

Als je orders verwerkt en wilt dat klanten een persoonlijk klinkende bedankmail krijgen (bovenop de standaard WooCommerce-mail) zonder dat je ‘m zelf typt:

add_action( 'woocommerce_order_status_processing', function( $order_id ) {
    $order   = wc_get_order( $order_id );
    $items   = wp_list_pluck( $order->get_items(), 'name' );
    $voornaam = $order->get_billing_first_name();

    $prompt = "Schrijf een korte persoonlijke bedankmail (max 80 woorden) "
            . "in het Nederlands voor {$voornaam}. Klant kocht: "
            . implode( ', ', $items ) . ". Tone: warm, droog, geen uitroeptekens. "
            . "Eindig met een zin over levering.";

    $tekst = aiwoo_call_openai( $prompt );
    if ( ! is_wp_error( $tekst ) ) {
        $order->add_order_note( "AI-concept bedankmail:\n\n{$tekst}", 0, false );
    }
}, 20, 1 );

In je Woo-admin verschijnt het concept als een privé-notitie bij de order. Een medewerker kopieert, past ‘m aan, mailt vanuit Outlook of een mailtool. Klanten krijgen een merkbaar persoonlijker bericht, jij behoudt controle.

Use-case 2 — AI-tag bij hoog-risico orders

Eén klacht over fraude die je toch eerder gezien had en je wéét waarom dit ertoe doet. Hook:

add_action( 'woocommerce_checkout_order_processed', function( $order_id ) {
    $order = wc_get_order( $order_id );
    $totaal = $order->get_total();
    $eerste = $order->get_customer_id() ? false : true;
    $land   = $order->get_billing_country();

    if ( $totaal < 200 ) return; // alleen orders > €200 laten checken

    $prompt = "Order-screening (alleen risico-detectie, geen oordeel):\n"
            . "Totaal: €{$totaal}\n"
            . "Eerste-keer-koper: " . ( $eerste ? 'ja' : 'nee' ) . "\n"
            . "Land: {$land}\n"
            . "Producten: " . wp_json_encode( wp_list_pluck( $order->get_items(), 'name' ) ) . "\n\n"
            . "Geef terug als JSON: { \"risico\": \"low|medium|high\", \"reden\": \"max 1 zin\" }.";

    $resultaat = aiwoo_call_openai( $prompt );
    if ( is_wp_error( $resultaat ) ) return;

    $data = json_decode( trim( $resultaat, "` \n" ), true );
    if ( ! empty( $data['risico'] ) && $data['risico'] !== 'low' ) {
        $order->update_meta_data( '_ai_risk', $data['risico'] );
        $order->update_meta_data( '_ai_risk_reden', $data['reden'] ?? '' );
        $order->add_order_note( "AI-screening: {$data['risico']} — {$data['reden']}" );
        $order->save();
    }
}, 30, 1 );

Combineer met een filter op de orderlijst die orders met _ai_risk = high rood kleurt. Dat is een uurtje extra werk, maar je kantooruren-team weet meteen wat ze als eerste moeten oppakken.

Use-case 3 — AI-productbeschrijving bij nieuwe SKU

Maak nieuwe producten af voordat je ‘r überhaupt naar kijkt. Triggeren bij transition_post_status van product-status auto-draft → publish (eerste publish-actie):

add_action( 'transition_post_status', function( $new, $old, $post ) {
    if ( $post->post_type !== 'product' ) return;
    if ( $old !== 'auto-draft' || $new !== 'publish' ) return;

    $product = wc_get_product( $post->ID );
    $titel   = $product->get_name();
    $cats    = wp_get_post_terms( $post->ID, 'product_cat', [ 'fields' => 'names' ] );

    if ( ! empty( $product->get_description() ) ) return; // alleen als leeg

    $prompt = "Schrijf een productbeschrijving van 100 woorden voor:\n"
            . "Product: {$titel}\nCategorie: " . implode( ', ', $cats ) . "\n"
            . "Tone: droog, direct, geen marketing-clichés.\n"
            . "Structuur: haak-zin, 3 benefits in bullets, zachte CTA-zin.";

    $tekst = aiwoo_call_openai( $prompt );
    if ( ! is_wp_error( $tekst ) ) {
        wp_update_post( [ 'ID' => $post->ID, 'post_content' => $tekst ] );
        update_post_meta( $post->ID, '_ai_draft', 'true' );
    }
}, 10, 3 );

Filter daarna in je Admin product-list op _ai_draft = true om snel alle AI-concepten te reviewen vóórdat je ze écht naar de winkel laat gaan. Voeg een “Goedgekeurd”-vinkje toe als je strikt wilt zijn.

Use-case 4 — AI-samenvatting bij elke nieuwe review

Voor merken met veel reviews: laat AI elke review meteen labelen op sentiment + thema, zodat je eind-van-maand-rapportage zichzelf schrijft.

add_action( 'comment_post', function( $comment_id ) {
    $comment = get_comment( $comment_id );
    if ( $comment->comment_type !== 'review' ) return;

    $prompt = "Classificeer deze review.\n\nTekst: \"{$comment->comment_content}\"\n\n"
            . "Geef JSON: { \"sentiment\": \"positive|neutral|negative\", "
            . "\"thema\": \"product|levering|service|prijs|overig\", \"score\": 1-5 }.";

    $resultaat = aiwoo_call_openai( $prompt );
    if ( is_wp_error( $resultaat ) ) return;

    $data = json_decode( trim( $resultaat, "` \n" ), true );
    if ( ! empty( $data ) ) {
        update_comment_meta( $comment_id, '_ai_sentiment', $data['sentiment'] );
        update_comment_meta( $comment_id, '_ai_thema', $data['thema'] );
    }
}, 10, 1 );

Geconcentreerd: een dashboard-widget die _ai_sentiment = negative van afgelopen 14 dagen toont = je zwakke plekken in één blik.

Wat je moet weten

  • Synchrone AI-calls in checkout-hooks zijn riskant. Bij Use-case 2: zet ‘m achter woocommerce_checkout_order_processed (na payment-redirect), niet vóór de betaling, anders schalen 5 trage orders je checkout-time naar 30+ sec.
  • Logging. Voeg een eigen error_log() of een Query Monitor-hook toe om mislukte AI-calls te zien. Niets erger dan stilletjes mislukken.
  • Action Scheduler. Voor zwaardere of bulk-taken: queue een as_schedule_single_action() zodat de AI-call buiten de request-cyclus loopt. Dat is hét voordeel van WordPress.
  • Privacy. Stuur niet meer data dan nodig naar OpenAI/Anthropic. Voor klantnamen kan een hash of voornaam-only voldoende zijn.

Volgende stap

Begin met Use-case 1 — het is de minst-enge en levert direct extra service-kwaliteit. Voeg de hook toe op staging, doe 5 testorders, kijk naar de output. Goed? Push naar productie, monitor 1 week.

Wil je dat we deze hooks meteen voor jouw shop opzetten of een review doen op je staging? Vraag een gratis WooCommerce AI-audit aan — we kijken samen welke hooks de grootste hefboom geven voor jouw catalogus.

Klaar om AI in je WooCommerce-shop te zetten?

Vraag een gratis WooCommerce AI-audit aan. Binnen 60 minuten weten we waar jouw grootste quick wins zitten — van AutomateWoo-flows tot Yoast-content.

Ook interessant