# Fejlesztőknek: shortcode-ok regisztrálása

> Saját shortcode a YayMailhez: a BaseShortcode osztály, a get_shortcodes() és a visszahívó függvények.

## Regisztráció

A shortcode-osztályt a `yaymail_register_shortcodes` akcióban példányosítod:

```php
function register_shortcodes() {
    YourNewShortcodes::get_instance();
}
add_action( 'yaymail_register_shortcodes', 'register_shortcodes' );
```

## Az osztály

Az osztály a `\YayMail\Abstracts\BaseShortcode` osztályból öröklődik. A konstruktorban az `$available_email_ids` tömb adja meg, mely sablonokban használható a shortcode. Négy módon adhatod meg:

1. Konkrét sablonazonosítók tömbje, például `new_order`, `customer_processing_order`.
2. `YAYMAIL_WITH_ORDER_EMAILS`: csak a rendelési adatot tartalmazó sablonok.
3. `YAYMAIL_NON_ORDER_EMAILS`: csak a rendelési adat nélküli sablonok.
4. `YAYMAIL_ALL_EMAILS`: minden sablon.

A konstruktor végén hívd a `parent::__construct()`-ot, és az osztálynak legyen `instance()` metódusa (egypéldányos minta).

## A get_shortcodes()

A metódus a shortcode-ok listáját adja vissza. Minden elem mezői:

| Mező | Jelentés |
|---|---|
| `name` | Egyedi azonosító (ez lesz a `[név]` a szövegben). |
| `description` | Rövid leírás. |
| `group` | Csoport, amely alatt a shortcode a listában megjelenik. |
| `callback` | A függvény, amely előállítja a kimenetet. |
| `attributes` | Nem kötelező: a shortcode attribútumai alapértékkel (például `text_link` → `here`). |

## A visszahívó függvény

A függvény a szerkesztőben és a kiküldött e-mailben is ezzel állítja elő a kimenetet. Paraméterei:

- `$data`: fő tulajdonságai a `render_data`, a `template` és az `is_placeholder`.
- `$shortcode_atts`: az attribútumok tömbje (csak attribútumos shortcode-nál).

A `render_data` a szerkesztőben a rendelést, az `is_sample` és az `is_customized_preview` jelzőt tartalmazza; kiküldött e-mailnél a `get_content_html` függvény adatait is hordozza. A jelzők:

| Jelző | Mikor igaz |
|---|---|
| `is_placeholder` | Ha az értéket helyőrzőként kell kezelni. |
| `is_sample` | Ha a szerkesztőben mintarendelés van kiválasztva. |
| `is_customized_preview` | Tesztlevél küldésekor vagy előnézetkor a szerkesztőben. |

Egy attribútumos példa: a függvény a `text_link` attribútumból és a sablon hivatkozásszínéből (`$template->get_text_link_color()`, ennek hiányában `YAYMAIL_COLOR_WC_DEFAULT`) egy linket ad vissza, az URL-t és a színt escape-elve:

```php
public function new_shortcode_2_render_function( $data, $shortcode_atts = [] ) {
    $template  = ! empty( $data['template'] ) ? $data['template'] : null;
    $text_link = $shortcode_atts['text_link'] ?? '';
    $color     = $template ? $template->get_text_link_color() : YAYMAIL_COLOR_WC_DEFAULT;
    return '<a style="color: ' . esc_attr( $color ) . ';" href="' . esc_url( get_home_url() ) . '">' . $text_link . '</a>';
}
```

A regisztrált shortcode-ok a szerkesztő shortcode-listájában a megadott csoport alatt jelennek meg (lásd a [Shortcode-ok](https://hub.hellowp.io/hu/plugins/email-customizer-for-woocommerce/shortcodeok/) fejezetet).
