✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

WordPressi administraatori menüü: alammenüü ümberkorraldamine

13

Üks asi WordPressi menüü API-ga töötamisel (see on add_menu_page, add_submenu_page ja muu sarnane) on see, et see ei muuda alammenüü üksuste järjestuse muutmist lihtsaks.

Muidugi, teatud asjade (nt taksonoomia või muu taoline) puhul saate lihtsalt muuta nende registreerimise järjekorda. Kuid oletame, et teil on WordPressi administraatorimenüü ja seejärel selle konkreetse menüü all mõned alammenüü lehed.

Vaikimisi loob WordPress ülataseme menüü ja seejärel kohe ülataseme menüü alla alammenüü elemendi, mis lingib samale lehele. Paljudel juhtudel võib see olla ideaalne.

Mõnel juhul võite siiski soovida seda muuta.

WordPressi administraatori menüü

Näide selle kohta, millal võiksite midagi muuta, võiks olla järgmine:

  • Teil on ülataseme menüü, mis on mõeldud valikute pakkumiseks pärast ühenduse loomist kolmanda osapoole API-ga,
  • Kolmanda osapoole API nõuab API-võtit (või mõnda muud autentimist), seega peate esmalt määrama selle jaoks seaded,
  • Miks mitte muuta esimene menüüelement Seaded ja teine ​​menüükäsk tegelikeks API tööriistadeks?

Muidugi, kui sätteid pole seadistatud, on kasulik kuvada ka API tööriistade peamenüüs teade, et kasutaja peaks seadete sisestamiseks klõpsama seadete lehele.

Kuid see ei kuulu selle postituse ulatusse. Praegu on siin viis, kuidas hallata menüü serveripoolset järjestamist. Kõigepealt kood ja seejärel selgitus.

<?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;
        }
    }
}

Üldiselt kasutan seda nimeruumiga objekti kontekstis, kuid selle postituse jaoks annan selle funktsioonile, mis eksisteerib nimeruumis.

Mõned asjad, mida tähele panna.

  • Kasutan konksu custom_menu_order, mis on ideaalne koht WordPressi menüüüksuste kallal töötamiseks,
  • Otsin konkreetselt alammenüüd acme-api-tools alammenüü massiivimuutuja $ menuName võtmest ,
  • Loon massiivi $newSubmenu ja seejärel vahetan üksused ja määran uue alammenüü olemasolevale võtmega tuvastatud alammenüüle.

Selle lähenemisviisiga seoses on mõned kommentaarid – võib-olla isegi probleemid (või vähemalt tõsised kaalutlused).

Nimelt eeldab kood täpselt teada võtit, millega me töötame. Mõnel juhul on see hea, kuid kui soovite muuta menüüd, mille võtit te ei tea (nt acme-api-tools ), peate seda muutma.

Järgmiseks eeldab see ka, et vahetamiseks on ainult kaks menüüüksust. Ülaltoodud juhul on see piisavalt lihtne, kuid kui neid oleks rohkem, vajate tõenäoliselt funktsiooni asjade teisaldamiseks ja uue massiivi tagastamiseks.

Alustamiseks piisab

Sellegipoolest peaks ülaltoodud funktsioon andma piisavalt teavet vähemalt selle kohta, kuidas seda teha, kui mitte rohkem, ja kuidas seejärel nähtava alammenüü massiivi manipuleerida

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem