Tovább a tartalomhoz

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.

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_registration
  • fluentcrm_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.

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:

  1. A My-plugin indítóesemény megjelenik az automatizálás indítóeseményeinek listájában.
  2. Az automatizálás-szerkesztőben beállíthatod a beállításait és a feltételeit.
  3. 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_registration akciót és a handle() metódusodat, amellyel elindíthatod és irányíthatod az automatizálást.

Készült:

Tiszteletben tartjuk a magánszférádat

Sütiket használunk a böngészési élmény javítására és a forgalom elemzésére. Az analitika csak akkor indul, ha engeded. Adatvédelmi irányelvek, Sütitájékoztató.

Sütibeállítások