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 feltétel regisztrálása
Szekció neve “A feltétel regisztrálása”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.
2. lépés: A kódrészlet felvétele
Szekció neve “2. lépés: A kódrészlet felvétele”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: