✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

WordPress Admin Menu: Alivalikon uudelleenjärjestäminen

13

Yksi WordPress-valikkosovellusliittymän (eli add_menu_page, add_submenu_page ja vastaavista) kanssa työskentelyssä olevista asioista on, että se ei helpota alivalikon kohteiden järjestämistä uudelleen.

Tiettyjen asioiden, kuten taksonomioiden tai vastaavien, osalta voit vain muuttaa järjestystä, jossa ne rekisteröidään. Mutta oletetaan, että sinulla on WordPressin järjestelmänvalvojavalikko ja sitten muutama alivalikkosivu kyseisen valikon alla.

Oletusarvoisesti WordPress luo ylätason valikon, jonka jälkeen se luo heti ylätason valikon alle alivalikkokohdan, joka linkittää samalle sivulle. Monissa tapauksissa tämä voi olla ihanteellinen.

Joissakin tapauksissa saatat kuitenkin haluta muuttaa sitä.

WordPressin järjestelmänvalvojan valikko

Esimerkkinä siitä, milloin haluat ehkä muuttaa jotain, voisi olla jotain tällaista:

  • Sinulla on ylätason valikko, jonka tarkoituksena on tarjota vaihtoehtoja, kun olet muodostanut yhteyden kolmannen osapuolen sovellusliittymään,
  • Kolmannen osapuolen sovellusliittymä vaatii API-avaimen (tai jonkin muun todennuksen), joten sinun on ensin määritettävä sen asetukset,
  • Mikset tee ensimmäisestä valikon kohdasta Asetukset ja toisesta valikosta todellisia API-työkaluja?

Tietysti, kun asetuksia ei ole asetettu, on hyödyllistä myös näyttää API-työkalut-päävalikossa viesti, että käyttäjän tulee napsauttaa Asetukset-sivua syöttääkseen asetukset.

Mutta se ei kuulu tämän postauksen piiriin. Toistaiseksi tässä on tapa hallita valikon uudelleenjärjestämistä palvelinpuolelta. Ensin koodi, sitten selitys.

<?php
add_action('custom_menu_order', __NAMESPACE__.'acmeReorderSubmenuItems);
/**
 * Reorders the menu by placing the second item before the first item.
 */
function acmeReorderSubmenuItems()
{
    global $submenu;
    $newSubmenu = [];
    foreach ($submenu as $menuName => $menuItems) {
        if ('acme-api-tools' === $menuName) {
            $newSubmenu[0] = $menuItems[1];
            $newSubmenu[1] = $menuItems[0];
            $submenu['acme-api-tools'] = $newSubmenu;
            break;
        }
    }
}

Yleisesti ottaen käytän tätä nimiavaruuden objektin yhteydessä, mutta tätä viestiä varten siirrän sen funktioon, joka on olemassa nimiavaruudessa.

Muutama huomioitavaa:

  • Käytän custom_menu_order- koukkua, joka on ihanteellinen paikka työstää WordPressin valikon kohteita,
  • Etsin erityisesti acme-api-tools-alivalikkoa $menuName – avaimesta $ submenu- taulukkomuuttujassa,
  • Luon taulukon $newSubmenu ja vaihdan sitten kohteet ja liitän uuden alivalikon avaimella tunnistettuun olemassa olevaan alivalikkoon.

Tähän lähestymistapaan liittyy muutamia huomautuksia – ehkä jopa ongelmia (tai ainakin vakavia näkökohtia).

Nimittäin koodi odottaa tietävän tarkasti avaimen, jonka kanssa haluamme työskennellä. Joissakin tapauksissa tämä on hyvä, mutta jos haluat muokata valikkoa, jonka avainta ei tunne (kuten acme-api-tools ), sinun on muutettava tätä.

Seuraavaksi tämä myös olettaa, että vaihdettavia valikkokohteita on vain kaksi. Se on riittävän helppoa yllä olevassa tapauksessa, mutta jos niitä olisi enemmän, tarvitset todennäköisesti toiminnon, joka käsittelee asioiden siirtämistä ja uuden taulukon palauttamista.

Tarpeeksi aloittaaksesi

Yllä olevan toiminnon pitäisi kuitenkin antaa tarpeeksi tietoa ainakin kuinka aloittaa tämä, jos ei enemmän, ja kuinka sitten voidaan käsitellä näkyvää alivalikkotaulukkoa.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja