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
- 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
Feature | Lösungsidee |
---|---|
Aufgaben | Eigener CPT „Aufgabe“ |
Rückrufe | Datum + wp_cron + Mail |
Kommunikation | Kontaktlog als CPT oder Kommentar |
Export | CSV-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.
Keine Antworten