Tovább a tartalomhoz

Fejlesztőknek: feltétel regisztrálása és példa

Saját láthatósági feltétel regisztrálása a yaymail_register_conditional_logics hookkal, és egy teljes példa: Vásárlói szerepkör.

A feltételosztály megírása után regisztrálnod kell, hogy a szerkesztő feltétellistájában megjelenjen. Ez a Láthatósági feltételek kiegészítőhöz tartozik.

A regisztráció a yaymail_register_conditional_logics action hookra kapcsolódik. A hook átadja a regisztrációs objektumot, amelynek register() metódusát a feltétel példányának get_logic_data() tömbjével hívod meg.

function register_conditional_logic( $conditional_logics ) {
$conditional_logics->register( NewConditionalLogic::get_instance()->get_logic_data() );
}
add_action( 'yaymail_register_conditional_logics', 'register_conditional_logic' );

Példa: Vásárlói szerepkör feltétel

Szekció neve “Példa: Vásárlói szerepkör feltétel”

A példában készítünk egy feltételt, amely:

  • Customer Role néven jelenik meg a szerkesztőben (a név a kódban megadott felirat, és a fordítástól függ),
  • dinamikusan felsorolja az összes WordPress-felhasználói szerepkört (előfizető, vásárló, bolt menedzser és a saját szerepköreid, például B2B),
  • a legördülő listából egy szerepkört választhatsz,
  • az elemet csak akkor mutatja, ha a vásárló szerepköre egyezik a kiválasztottal.

1. lépés: Kódrészlet-bővítmény telepítése

Szekció neve “1. lépés: Kódrészlet-bővítmény telepítése”

A kódot nem érdemes a téma functions.php fájljába tenni. Telepíts egy kódrészlet-kezelő bővítményt, amellyel PHP-snippeteket vehetsz fel.

Hozz létre egy új PHP-snippetet, add hozzá az alábbi kódot, és állítsd úgy, hogy mindenhol fusson (ne csak a felületen vagy csak a weboldalon).

namespace YayMailAddonConditionalLogic\ConditionalLogics;
use YayMailAddonConditionalLogic\Abstracts\BaseConditionalLogic;
/**
* Feltétel: vásárlói szerepkör
*/
class CustomerRoleLogic extends BaseConditionalLogic {
private static $instance;
public static function instance() {
if ( null === static::$instance ) {
static::$instance = new static();
}
return static::$instance;
}
protected function __construct() {
parent::__construct(
'customer_role', // Egyedi kulcs.
__( 'Customer Role', 'yaymail' ), // A szerkesztő legördülő listájában látszó név.
'single_select' // Legördülő lista, egy szerepkör választható.
);
}
public function get_options() {
global $wp_roles;
$options = [];
if ( ! empty( $wp_roles->roles ) ) {
foreach ( $wp_roles->roles as $role_key => $role_data ) {
$options[] = [
'label' => translate_user_role( $role_data['name'] ),
'value' => $role_key,
];
}
}
return $options;
}
public function check_logic( $args ) {
$condition = $args['condition'];
$order = $args['order']; // WC_Order objektum.
$condition_value = $condition['value'];
// A felhasználó azonosítója a rendelésből.
$user_id = $order->get_user_id();
if ( ! $user_id ) {
return false; // Vendégrendelés, nincs szerepkör.
}
// A WP_User objektum.
$user = get_userdata( $user_id );
if ( ! $user ) {
return false;
}
// Igaz, ha a vásárló szerepkörei között ott van a kiválasztott.
return in_array( $condition_value, (array) $user->roles, true );
}
}
// Regisztrálás.
add_action( 'yaymail_register_conditional_logics', function( $conditional_logics ) {
$conditional_logics->register( CustomerRoleLogic::instance()->get_logic_data() );
});

A get_options() a $wp_roles globális változóból olvassa ki a szerepköröket, ezért az újonnan létrehozott szerepkörök is megjelennek a listában. A check_logic() vendégrendelésnél (nincs felhasználó) false-t ad, így a szerepkörhöz kötött elem a vendégvásárlók e-mailjében nem jelenik meg.

3. lépés: Az új feltétel ellenőrzése a szerkesztőben

Szekció neve “3. lépés: Az új feltétel ellenőrzése a szerkesztőben”

Nyiss meg egy e-mail sablont a szerkesztőben, jelölj ki egy elemet, és add hozzá a feltételt a Láthatósági feltételek között. Az új feltétel a listában a megadott néven jelenik meg, a második legördülő listában pedig a szerepkörök közül választhatsz.

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