WordPress: Self-Service für Kunden einrichten – Adressänderung, Nachbestellung und Supportanfrage

Warum SelfService? Weil’s Dir Arbeit spart.

Wenn ein Kunde wegen jeder Adressänderung anruft, hast Du schon verloren.
Kunden wollen selbst klicken. Und Du willst Deine Mitarbeiter entlasten.

Also: WordPress als Self-Service-Plattform nutzen.
Mit Login. Mit Formularen. Mit Automatisierung.

Voraussetzungen

  • Benutzerkonto pro Kunde
  • geschützte Seiten (z. B. über current_user_can)
  • eigene Formulare für Adressänderung, Nachbestellung, Support
  • Verarbeitung per PHP

1. Adressänderung im Kundenbereich

Formular

function ds_adressformular_anzeigen() {
    $user = wp_get_current_user();
    ?>
    <form method="POST" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
        <input type="hidden" name="action" value="ds_adresse_speichern">
        <input type="text" name="strasse" value="<?php echo esc_attr(get_user_meta($user->ID, 'adresse_strasse', true)); ?>" placeholder="Straße" required>
        <input type="text" name="plz" value="<?php echo esc_attr(get_user_meta($user->ID, 'adresse_plz', true)); ?>" placeholder="PLZ" required>
        <input type="text" name="ort" value="<?php echo esc_attr(get_user_meta($user->ID, 'adresse_ort', true)); ?>" placeholder="Ort" required>
        <button type="submit">Adresse speichern</button>
    </form>
    <?php
}

Verarbeitung

add_action('admin_post_ds_adresse_speichern', 'ds_adresse_speichern');

function ds_adresse_speichern() {
    $user_id = get_current_user_id();

    update_user_meta($user_id, 'adresse_strasse', sanitize_text_field($_POST['strasse']));
    update_user_meta($user_id, 'adresse_plz', sanitize_text_field($_POST['plz']));
    update_user_meta($user_id, 'adresse_ort', sanitize_text_field($_POST['ort']));

    wp_redirect(home_url('/mein-konto?update=1'));
    exit;
}

2. Nachbestellungen erfassen

Formular (Beispiel mit Artikelnummer und Menge)

<form method="POST" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
    <input type="hidden" name="action" value="ds_nachbestellung_absenden">
    <input type="text" name="artikelnummer" placeholder="Artikelnummer" required>
    <input type="number" name="menge" placeholder="Menge" required>
    <textarea name="kommentar" placeholder="Kommentar (optional)"></textarea>
    <button type="submit">Nachbestellen</button>
</form>

Verarbeitung

add_action('admin_post_ds_nachbestellung_absenden', 'ds_nachbestellung_absenden');

function ds_nachbestellung_absenden() {
    $user = wp_get_current_user();

    $inhalt = sprintf(
        "Kunde: %s\nArtikel: %s\nMenge: %s\nKommentar: %s",
        $user->user_email,
        sanitize_text_field($_POST['artikelnummer']),
        intval($_POST['menge']),
        sanitize_textarea_field($_POST['kommentar'])
    );

    wp_mail('vertrieb@deinefirma.de', 'Neue Nachbestellung', $inhalt);

    wp_redirect(home_url('/mein-konto?nachbestellt=1'));
    exit;
}

3. Supportanfrage über ein Ticket-System

Du kannst einen Custom Post Type nutzen:

function ds_support_posttype() {
    register_post_type('support_ticket', [
        'label' => 'Supporttickets',
        'public' => false,
        'show_ui' => true,
        'supports' => ['title', 'editor'],
        'capability_type' => 'post',
    ]);
}
add_action('init', 'ds_support_posttype');

Formular zum Erstellen

<form method="POST" action="<?php echo esc_url(admin_url('admin-post.php')); ?>">
    <input type="hidden" name="action" value="ds_support_ticket_anlegen">
    <input type="text" name="betreff" placeholder="Betreff" required>
    <textarea name="beschreibung" placeholder="Problem" required></textarea>
    <button type="submit">Abschicken</button>
</form>

Verarbeitung und Zuweisung

add_action('admin_post_ds_support_ticket_anlegen', 'ds_support_ticket_anlegen');

function ds_support_ticket_anlegen() {
    $user = wp_get_current_user();

    $id = wp_insert_post([
        'post_type'    => 'support_ticket',
        'post_title'   => sanitize_text_field($_POST['betreff']),
        'post_content' => sanitize_textarea_field($_POST['beschreibung']),
        'post_status'  => 'publish',
        'post_author'  => $user->ID,
    ]);

    wp_redirect(home_url('/mein-konto?tickets=1'));
    exit;
}

Mein Bereich: „Mein Konto“-Seite dynamisch befüllen

Du kannst alle Komponenten auf einer Seite bündeln:

  • Adressdaten ändern
  • Letzte Nachbestellungen einsehen
  • Neue Nachbestellung erfassen
  • Eigene Tickets anzeigen
if (is_user_logged_in()) {
    ds_adressformular_anzeigen();
    echo '<hr>';
    echo '<h2>Nachbestellung</h2>';
    // nachbestellformular_anzeigen();
    echo '<hr>';
    echo '<h2>Support</h2>';
    // supportformular_anzeigen();
} else {
    echo 'Bitte einloggen.';
}

Mein Fazit

Self-Service spart Zeit. Für Dich und für Deine Kunden.
Und es ist technisch keine Raketenwissenschaft.
Wenn Du WordPress schon im Einsatz hast – nutz es.

Wenn Du willst, bau ich Dir das passende Portal dazu.
Einmal richtig gemacht – läuft.