Egyedi automatizálás-indítóesemény
Saját indítóesemény regisztrálása PHP-ból, hogy a bővítményed eseményei elindíthassanak egy automatizálást.
Az automatizálás indítóeseménye (trigger) adja meg, mikor induljon el egy automatizálás. A FluentCRM sok beépített indítóeseményt ad (elsődleges, kereskedelmi, tagsági és tanulásmenedzsment-indítók). Ha a saját bővítményed eseményéhez, például egy egyedi regisztrációhoz vagy vásárláshoz kell automatizálás, regisztrálhatsz saját indítóeseményt, és elsüthetsz, amikor az esemény bekövetkezik.
Használt kampók
Szekció neve “Használt kampók”| Típus | Kampó neve | Mire való |
|---|---|---|
| Filter | fluentcrm_funnel_triggers |
Felveszi az indítóeseményt a globális listára, így megjelenik az automatizálás-szerkesztőben. |
| Filter | fluentcrm_funnel_editor_details_{trigger_name} |
Megadja az indítóesemény beállításainak és feltételeinek szerkezetét. A {trigger_name} helyére a saját azonosítód kerül. |
| Action | fluentcrm_funnel_start_{trigger_name} |
A FluentCRM indítja, amikor a beállítások és feltételek alapján az indítóeseménynek futnia kell. Ide kerül az üzleti logikád. |
A példában az indítóesemény azonosítója my_plugin_registration, vagyis a kampók:
fluentcrm_funnel_editor_details_my_plugin_registrationfluentcrm_funnel_start_my_plugin_registration
1. lépés: az indítóesemény osztálya
Szekció neve “1. lépés: az indítóesemény osztálya”Hozz létre egy PHP-osztályt (például Custom\Triggers\CustomTrigger), amely tartalmazza az indítóesemény leírását, a szerkesztőmezőket és a kezelőlogikát.
<?php
namespace Custom\Triggers;
class CustomTrigger{ protected $triggerName; protected $priority; protected $actionArgNum;
public function __construct() { $this->triggerName = 'my_plugin_registration'; $this->priority = 20; $this->actionArgNum = 2;
// 1) Az indítóesemény felvétele a listára add_filter( 'fluentcrm_funnel_triggers', [$this, 'addTrigger'], $this->priority, 1 );
// 2) A szerkesztő beállításai add_filter( 'fluentcrm_funnel_editor_details_' . $this->triggerName, [$this, 'prepareEditorDetails'], 10, 1 );
// 3) Az indítóesemény kezelése add_action( 'fluentcrm_funnel_start_' . $this->triggerName, [$this, 'handle'], 10, 2 ); }
/** * Az indítóesemény alapadatai a listához. */ public function getTrigger() { return [ 'category' => __('My-plugin'), 'label' => __('My-plugin'), 'description' => __( 'Az automatizálás a My-plugin regisztrációjának befejezésekor indul' ), 'icon' => 'fc-icon-wp_new_user_signup', ]; }
/** * Az indítóesemény hozzáadása a FluentCRM nyilvántartásához. */ public function addTrigger($triggers) { $triggers[$this->triggerName] = $this->getTrigger();
return $triggers; }
/** * Az indítóesemény beállítómezői. */ public function getSettingsFields($funnel) { return [ 'title' => __('My-plugin regisztráció'), 'sub_title' => __( 'Az automatizálás a My-plugin regisztrációjának befejezésekor indul' ), 'fields' => [ 'message' => [ 'type' => 'input-text', 'label' => __('Üzenet címe'), 'placeholder' => __('Írd be az üzenet címét'), ], 'description' => [ 'type' => 'html', 'label' => 'Leírás', 'info' => '<b>' . __( 'Ez az üzenet hozzáadódik a felhasználóhoz, de címet kell adni neki' ) . '</b>', ], ], ]; }
/** * A teljes szerkesztő-objektum, amelyet a FluentCRM vár. */ public function prepareEditorDetails($funnel) { $funnel->settings = wp_parse_args( $funnel->settings, $this->getFunnelSettingsDefaults() ); $funnel->settingsFields = $this->getSettingsFields($funnel); $funnel->conditions = wp_parse_args( $funnel->conditions, $this->getFunnelConditionDefaults($funnel) ); $funnel->conditionFields = $this->getConditionFields($funnel);
return $funnel; }
/** * A „Beállítások” rész alapértékei. */ public function getFunnelSettingsDefaults() { return [ 'subscription_status' => 'subscribed', ]; }
/** * A „Feltételek” rész mezői. */ public function getConditionFields($funnel) { return [ 'update_type' => [ 'type' => 'radio', 'label' => __('Ha a kapcsolattartó már létezik?', 'fluent-crm'), 'help' => __( 'Add meg, mi történjen, ha a feliratkozó már szerepel az adatbázisban', 'fluent-crm' ), 'options' => $this->getUpdateOptions(), ], 'user_roles' => [ 'type' => 'multi-select', 'is_multiple' => true, 'label' => __('Célzott felhasználói szerepkörök', 'fluent-crm'), 'help' => __( 'Válaszd ki, mely szerepkörök regisztrációja indítsa az automatizálást', 'fluent-crm' ), 'placeholder' => __('Válassz szerepköröket', 'fluent-crm'), 'options' => $this->getUserRoles(), 'inline_help' => __( 'Hagyd üresen, ha minden szerepkörre fusson', 'fluent-crm' ), ], 'run_multiple' => [ 'type' => 'yes_no_check', 'label' => '', 'check_label' => __( 'Az automatizálás többször is induljon újra ugyanannak a kapcsolattartónak ennél az eseménynél (csak akkor kapcsold be, ha ezt szeretnéd)' ), 'inline_help' => __( 'Bekapcsolva újraindul az automatizálás, ha a kapcsolattartó már benne van. Egyébként kihagyja.', 'fluent-crm' ), ], ]; }
/** * A feltételmezők alapértékei. */ public function getFunnelConditionDefaults($funnel) { return [ 'update_type' => 'update', // másik lehetőség: skip_all_if_exist, skip_update_if_exist 'user_roles' => $this->getUserRoles(), 'run_multiple' => 'yes', ]; }
/** * Az „update_type” rádiómező lehetőségei. */ public function getUpdateOptions() { return [ [ 'id' => 'update', 'title' => __('Frissítés, ha létezik', 'fluent-crm'), ], [ 'id' => 'skip_all_if_exist', 'title' => __( 'Az automatizálás kihagyása, ha a kapcsolattartó már létezik', 'fluent-crm' ), ], ]; }
/** * A szerkeszthető WordPress-szerepkörök a FluentCRM által várt formában. */ public function getUserRoles($keyed = false) { if (!function_exists('get_editable_roles')) { require_once ABSPATH . 'wp-admin/includes/user.php'; }
$roles = get_editable_roles(); $formattedRoles = [];
foreach ($roles as $roleKey => $role) { if ($keyed) { $formattedRoles[$roleKey] = $role['name']; } else { $formattedRoles[] = [ 'id' => $roleKey, 'title' => $role['name'], ]; } }
return $formattedRoles; }
/** * A fő kezelő, amely az indítóesemény elsülésekor fut. * * @param \FluentCrm\App\Models\Funnel $funnel * @param array $originalArgs Az eseménynek átadott argumentumok. */ public function handle($funnel, $originalArgs) { // Ide jön a saját logikád. error_log(print_r([$funnel, $originalArgs], true)); }}A prepareEditorDetails() metódus azt az objektumot adja vissza, amelyből a FluentCRM az indítóesemény beállítás- és feltételpaneljét kirajzolja az automatizálás-szerkesztőben. A beállítómezők a getSettingsFields() leírásból készülnek; további mezőtípusokat az Űrlapmezők kódszerkezete fejezetben találsz.
2. lépés: az osztály regisztrálása
Szekció neve “2. lépés: az osztály regisztrálása”Az osztályt akkor példányosítsd, amikor a FluentCRM Pro már betöltődött. Erre a plugins_loaded akció a szokásos hely:
add_action('plugins_loaded', function () { if (defined('FLUENTCAMPAIGN_DIR_FILE')) { new \Custom\Triggers\CustomTrigger(); }});Ezután:
- A My-plugin indítóesemény megjelenik az automatizálás indítóeseményeinek listájában.
- Az automatizálás-szerkesztőben beállíthatod a beállításait és a feltételeit.
- Amikor az egyedi eseményed bekövetkezik, és meghívod a megfelelő FluentCRM-függvényeket, a FluentCRM lefuttatja a
fluentcrm_funnel_start_my_plugin_registrationakciót és ahandle()metódusodat, amellyel elindíthatod és irányíthatod az automatizálást.
Készült: