WordPress: CRM-Funktionen per Plugin integrieren – Kontakte verwalten ohne neue Systeme

Warum überhaupt CRM in WordPress?

Du brauchst Kontaktverwaltung.
Aber kein neues System.
Kein HubSpot. Kein Salesforce. Kein Abo.

Wenn Du WordPress nutzt, kannst Du Kontakte direkt dort pflegen.
Mit eigenem Plugin. Schlank. DSGVO-konform.
Und so gebaut, wie Du’s brauchst.

Basis: Custom Post Type für „Kontakt“

function ds_kontakt_posttype() {
    register_post_type('kontakt', [
        'label'         => 'Kontakte',
        'public'        => false,
        'show_ui'       => true,
        'supports'      => ['title'],
        'menu_icon'     => 'dashicons-id-alt',
        'capability_type' => 'post',
    ]);
}
add_action('init', 'ds_kontakt_posttype');

Metafelder für Details

Jeder Kontakt hat:

  • Firma
  • E-Mail
  • Telefon
  • Status
  • Notizfeld

Du kannst Advanced Custom Fields (ACF) nehmen – oder selber speichern.

function ds_kontakt_speichern($post_id) {
    if (get_post_type($post_id) !== 'kontakt') return;

    if (isset($_POST['ds_email'])) {
        update_post_meta($post_id, 'ds_email', sanitize_email($_POST['ds_email']));
    }

    if (isset($_POST['ds_status'])) {
        update_post_meta($post_id, 'ds_status', sanitize_text_field($_POST['ds_status']));
    }
}
add_action('save_post', 'ds_kontakt_speichern');

Formular zum Anlegen eines Kontakts

<form action="<?php echo esc_url(admin_url('admin-post.php')); ?>" method="POST">
  <input type="hidden" name="action" value="ds_neuer_kontakt">
  <input type="text" name="firma" placeholder="Firma" required>
  <input type="email" name="ds_email" placeholder="E-Mail" required>
  <select name="ds_status">
    <option value="neu">Neu</option>
    <option value="interessiert">Interessiert</option>
    <option value="abgeschlossen">Abgeschlossen</option>
  </select>
  <button type="submit">Speichern</button>
</form>

Verarbeitung im Plugin

add_action('admin_post_ds_neuer_kontakt', 'ds_neuer_kontakt');

function ds_neuer_kontakt() {
    $firma  = sanitize_text_field($_POST['firma']);
    $email  = sanitize_email($_POST['ds_email']);
    $status = sanitize_text_field($_POST['ds_status']);

    $post_id = wp_insert_post([
        'post_type'  => 'kontakt',
        'post_title' => $firma,
        'post_status'=> 'publish',
    ]);

    if ($post_id) {
        update_post_meta($post_id, 'ds_email', $email);
        update_post_meta($post_id, 'ds_status', $status);
    }

    wp_redirect(admin_url('edit.php?post_type=kontakt'));
    exit;
}

Filterung nach Status im Admin

function ds_kontakt_filter($query) {
    if (!is_admin() || $query->get('post_type') !== 'kontakt') return;

    if (!empty($_GET['ds_status'])) {
        $query->set('meta_query', [
            [
                'key'     => 'ds_status',
                'value'   => sanitize_text_field($_GET['ds_status']),
                'compare' => '='
            ]
        ]);
    }
}
add_action('pre_get_posts', 'ds_kontakt_filter');

Erweiterbar mit Aufgaben, Erinnerungen, E-Mail

FeatureLösungsidee
AufgabenEigener CPT „Aufgabe“
RückrufeDatum + wp_cron + Mail
KommunikationKontaktlog als CPT oder Kommentar
ExportCSV-Download per Button

Mein Fazit

Kein CRM von der Stange.
Aber alles, was Du brauchst.
Und vor allem: in Deiner Hand.

Wenn Du’s vernünftig baust, hast Du ein leichtgewichtiges, internes CRM – ohne Lizenzmodell.

Kategorien:

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert