# Menü, navigáció és bejelentkezés testreszabása

> Új menüpont, WP Admin gomb az oldalsávban, egyedi fül a webhely hozzáadása oldalon, és a bejelentkezés utáni oldal módosítása.

A fejezet kódrészletei a **Custom Dashboard** kiegészítő **PHP** és **CSS** fülére kerülnek (ingyenes kiegészítő, telepítése a [kiegészítők kezelése](https://hub.hellowp.io/hu/plugins/mainwp/iranyitopult-kiegeszitok/) fejezet szerint). A kódot egyedi bővítménybe vagy a gyermektéma `functions.php` fájljába is teheted, de a kiegészítő a legegyszerűbb. Mentés után a változás azonnal látszik.

## Új menüpont a navigációban

A bal oldali menübe saját parancsikont tehetsz, például egy gyakran használt oldalhoz vagy külső eszközhöz.

1. Nyisd meg a **Custom Dashboard** kiegészítőt, és válaszd a **PHP** fület.
2. Illeszd be a kódot:

   ```php
   add_filter( 'mainwp_main_menu', 'mycustom_mainwp_main_menu', 10, 1 );
   function mycustom_mainwp_main_menu( $left_menu ) {
       // A menüpont helye (0 = első, 1 = második, 2 = harmadik ...)
       $index = 2;
       $sub_menu_after = array_splice( $left_menu['leftbar'], $index );

       $addition_item = array();

       $addition_item[] = 'Frissítések';                   // A menüpont felirata
       $addition_item[] = 'custom_updates';                // Egyedi belső kulcs
       $addition_item[] = 'admin.php?page=UpdatesManage';  // Cím vagy oldal-azonosító
       $addition_item[] = 'updates_custom_id';             // HTML-azonosító
       $addition_item[] = '<i class="sync icon"></i>';     // Ikon (nem kötelező)

       $left_menu['leftbar'][] = $addition_item;
       $left_menu['leftbar'] = array_merge( $left_menu['leftbar'], $sub_menu_after );

       return $left_menu;
   }
   ```

3. Módosítsd az értékeket a sajátodra, majd kattints a **Save Changes** gombra.

A `$addition_item` elemei sorrendben:

| Érték | Jelentése | Példa |
|---|---|---|
| Felirat | A menüben látszó szöveg | `'Saját oldalam'` |
| Menükulcs | Egyedi belső azonosító | `'my_custom_page'` |
| Cím | Oldal címe vagy admin-azonosítója | `'admin.php?page=MyPage'` |
| Azonosító | A HTML-elem azonosítója | `'my_custom_id'` |
| Ikon | Az ikon teljes HTML-kódja | `'<i class="chart bar icon"></i>'` |

A menüpont helyét az `$index` értéke adja: `0` az első, `1` a második, `2` a harmadik hely.

### Ikon megadása

Az ikon a Fomantic UI ikonkészletéből való, és a teljes HTML-kódot kell megadni:

| Ikon | Kód |
|---|---|
| Otthon | `<i class="home icon"></i>` |
| Fogaskerék | `<i class="cog icon"></i>` |
| Oszlopdiagram | `<i class="chart bar icon"></i>` |
| Felhasználó | `<i class="user icon"></i>` |
| Boríték | `<i class="envelope icon"></i>` |

Ha csak az osztály nevét írod be (például `chart bar`), a MainWP sima szövegként írja ki, nem ikonként.

## WP Admin gomb az oldalsávban

A WordPress admin felületére a jobb felső felhasználói menü **WP Admin** pontja visz (a profilkép vagy a felhasználó ikon alatt). Ha inkább az oldalsávban szeretnéd látni a hivatkozást, két kódrészlet kell.

**1. lépés: PHP-kód**

1. A **Custom Dashboard** kiegészítő **PHP** fülén add hozzá:

   ```php
   add_filter( 'mainwp_main_menu', 'mycustom_mainwp_main_menu', 10, 1 );
   function mycustom_mainwp_main_menu( $left_menu ) {
       $index = 10; // A menüpont helye
       $sub_menu_after = array_splice( $left_menu['leftbar'], $index );

       $addition_item = array();

       $addition_item[] = 'WP Admin';               // Felirat
       $addition_item[] = '';                       // Szülő kulcsa
       $addition_item[] = 'index.php';              // A WordPress irányítópultja
       $addition_item[] = 'custom-wp-admin-item';   // HTML-azonosító
       $addition_item[] = '';                       // Ikon (nem kötelező)

       $left_menu['leftbar'][] = $addition_item;
       $left_menu['leftbar'] = array_merge( $left_menu['leftbar'], $sub_menu_after );

       return $left_menu;
   }
   ```

2. Kattints a **Save Changes** gombra.

**2. lépés: CSS-kód (az oldalsáv aljára igazítás)**

1. Váltsd át a kiegészítőt a **CSS** fülre.
2. Illeszd be:

   ```css
   #custom-wp-admin-item {
       padding-left: 10px;
       padding-right: 10px;
       position: absolute;
       bottom: 0;
   }
   ```

3. Kattints a **Save Changes** gombra. A **WP Admin** gomb az oldalsáv alján jelenik meg.

Módosítási lehetőségek:

| Mit | Hogyan |
|---|---|
| A gomb helye a menüben | Az `$index` értéke (kisebb szám = feljebb) |
| A felirat | A `'WP Admin'` szöveg cseréje |
| A cél | Az `'index.php'` cseréje másik admin-oldalra |
| Látszólagos hely | A CSS `bottom` értéke, vagy a `position: absolute` törlése |

## Egyedi fül a webhely hozzáadása oldalon

A **Webhelyek → Új hozzáadása** oldalon alapból az **Egyetlen webhely**, a **Több webhely** és a **Webhelyek importálása** fül van. Saját kiegészítőd vagy munkafolyamatod számára újabb fület adhatsz két PHP-horoggal. Szükséges a **Custom Dashboard** kiegészítő vagy egy egyedi bővítmény.

```php
add_action( 'mainwp_add_site_top_navigation', 'mycustom_add_site_tab_navigation', 10, 2 );
function mycustom_add_site_tab_navigation( $active, $item_link ) {
    $tab     = 'custom-site';
    $classes = 'item' . ( $tab === $active ? ' active' : '' );
    $href    = $item_link
        ? ' href="' . esc_url( admin_url( 'admin.php?page=managesites&do=new&menu_active=' . $tab ) ) . '"'
        : '';

    printf(
        '<a class="%1$s" data-tab="%2$s"%3$s><i class="puzzle piece icon"></i>%4$s</a>',
        esc_attr( $classes ),
        esc_attr( $tab ),
        $href,
        esc_html__( 'Egyedi webhely', 'a-te-szoveg-tartomanyod' )
    );
}

add_action( 'mainwp_add_site_tabs_content', 'mycustom_add_site_tab_content' );
function mycustom_add_site_tab_content() {
    $active  = isset( $_GET['menu_active'] )
        ? sanitize_key( wp_unslash( $_GET['menu_active'] ) )
        : 'single-site';
    $classes = 'ui bottom attached tab padded segment' . ( 'custom-site' === $active ? ' active' : '' );

    printf(
        '<div class="%1$s" data-tab="custom-site"><h2 class="ui header">%2$s</h2><p>%3$s</p></div>',
        esc_attr( $classes ),
        esc_html__( 'Egyedi webhely', 'a-te-szoveg-tartomanyod' ),
        esc_html__( 'Ide kerülhetnek az egyedi mezők vagy útmutatás.', 'a-te-szoveg-tartomanyod' )
    );
}
```

A `data-tab` értékének a fülben és a tartalomban meg kell egyeznie. A `custom-site` azonosítót, a feliratot, az ikont és a tartalmat cseréld a sajátodra.

| Horog | Mire jó | Paraméterek |
|---|---|---|
| `mainwp_add_site_top_navigation` | Új elem az **Egyetlen webhely**, **Több webhely** és **Webhelyek importálása** elemek mellé | `$active`: az aktuális fül azonosítója; `$item_link`: jelzi, hogy az elemnek vissza kell-e mutatnia a hozzáadó oldalra |
| `mainwp_add_site_tabs_content` | Az új fülhöz tartozó tartalom | nincs |

A tartalmi horog a meglévő hozzáadási űrlapon belül fut, ezért ne tegyél bele másik `<form>` elemet. A saját mezők és mentési kód legyen jogosultság-ellenőrzéssel, nonce-ellenőrzéssel, tisztítással és kimeneti escape-eléssel ellátva.

## A bejelentkezés utáni oldal módosítása

Alapból a WordPress a bejelentkezés után a `wp-admin` irányítópultjára visz. A MainWP **Műveletek** oldalára így irányíthatod át a bejelentkezést (a két módszer közül csak az egyiket használd, a kettő együtt hibát okozhat).

### 1. módszer: Custom Dashboard (ajánlott)

1. Telepítsd és kapcsold be a **Custom Dashboard** kiegészítőt.
2. Nyisd meg a kiegészítő **PHP** fülét.
3. Illeszd be a kódot:

   ```php
   function admin_default_page() {
       return 'wp-admin/admin.php?page=mainwp_tab';
   }

   add_filter( 'login_redirect', 'admin_default_page' );
   ```

4. Kattints a **Save Changes** gombra. A következő bejelentkezés már a **Műveletek** oldalra visz.

### 2. módszer: a `functions.php` szerkesztése

Ha nem akarsz kiegészítőt telepíteni:

1. Nyisd meg a vezérlőpult webhelyén az **Eszközök → Sablonfájl-szerkesztő** oldalt.
2. A jobb oldali listában válaszd a **Sablon funkciók (functions.php)** fájlt.
3. Illeszd be ugyanazt a kódot a fájl végére.
4. Kattints a **Fájl frissítése** gombra.

Gyermektéma nélkül a sablon frissítése felülírja a módosítást. Ilyenkor jobb egy kódrészlet-kezelő bővítmény (például Code Snippets).

### Másik cél oldal

A visszatérési érték módosításával más MainWP-oldalra is irányíthatsz:

| Oldal | Cím |
|---|---|
| Műveletek | `admin.php?page=mainwp_tab` |
| Webhelyek kezelése | `admin.php?page=managesites` |
| Frissítések | `admin.php?page=UpdatesManage` |
| Ügyfelek | `admin.php?page=ManageClients` |

A beállítás ellenőrzéséhez jelentkezz ki, majd be.

## Ellenőrző lista

- a Custom Dashboard kiegészítő telepítve van, vagy a kód a `functions.php`-ban van (nem mindkettőben);
- a kód a megfelelő fülön (**PHP** vagy **CSS**) van, és el van mentve;
- a menüpont felirata, címe és helye a tiéd;
- az átirányítást kijelentkezés és bejelentkezés után kipróbáltad.
