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

Kuidas lisada kohandatud sätteid WordPressi olemasolevale vidinale

3

Sellest postitusest õpime, kuidas lisada oma kohandatud HTML-i ja sätteid mis tahes WordPressi standardvidinatele või teistele. Neid seadeid kasutades õpime erinevaid nippe, kuidas vidinate käitumist vastavalt manipuleerida.

Esimene osa; kohandatud seadete lisamine ja salvestamine on üsna lihtne. Teine osa sõltub sellest, mida konkreetselt soovite teha, ja see sõltub sellest, millist vidinat te manipuleerite. Sellesse postitusse olen lisanud kaks näidet; vidina vahelejätmine olenevalt sättest (teatud juhtudel seadete lisamiseks vidina nähtavuse juhtimiseks) ja WordPressi navigeerimisvidina menüü argumentidega manipuleerimine. Teise osa jaoks toodud näide peaks andma teile hea aimu, kuidas saate sellega hakkama, mida soovite teha.

Kohandatud seadete lisamine mis tahes vidinale

Olemasolevatele vidinatele kohandatud sätete lisamiseks kasutame toimingut nimega [in_widget_form](https://developer.wordpress.org/reference/hooks/in_widget_form/). Seda toimingut rakendatakse kõigi vidinate form()funktsioonidele, mis on funktsioon, mis vastutab vidina administraatori osa renderdamise eest.

Selle filtriga saame kolm parameetrit, kuid meid huvitavad ainult esimene ja kolmas. Esimene on vidina eksemplar, mida kasutame väljade õigete nimede ja ID-de toomiseks ning (valikuliselt) kontrollimiseks, millise vidina külge oleme ühendatud. Kolmas parameeter on vidina salvestatud sätete massiiv, mida peame kasutama oma sätete eelmise salvestatud oleku kontrollimiseks.

Allolev kood lisab märkeruudu sätte nimega " awp-custom-setting". Kohandage nime ja HTML-i vastavalt sellele, mida vajate. Oluline on seda kasutada $widget->get_field_name()õigete ID-de ja nameatribuutide lisamiseks kõigile oma sisenditele. Teie sisendite väärtus tuleks täita varem salvestatuga ja see on midagi, mille leiate parameetrist $instance. Märkeruutude puhul saate [checked](https://developer.wordpress.org/reference/functions/checked/)()märgitud atribuudi väljastamiseks kasutada WordPressi funktsiooni.

Pärast selle lisamist oma teema functions.phpvõi pistikprogrammi koodile peaksid kõik vidinad saama administraatori vormi lõpus märkeruudu.

Sihtige konkreetseid vidinaid

Kui soovite oma sätteid rakendada ainult ühele või mõnele konkreetsele vidinale, saate võrrelda id_baseobjekti omadusi $widget. Peate teadma, mis on põhi-ID – kui te pole kindel, tehke lihtsalt var_dump($widget->id_base)konksu sees, salvestage ja kontrollige administraatoris iga vidina väljundit. Näiteks navigeerimisvidinal on ID-baas nav_menuja arhiivividinal archives.

Allolevas näites kontrollime, kas vidin on navigeerimisvidin. Kui see pole nii, tühistatakse funktsioon nupuga return. Ainult navigeerimisvidinad saavad kohandatud märkeruudu:

Peaksite saama administraatoris sellise seadistuse:

Kuidas lisada kohandatud sätteid WordPressi olemasolevale vidinale

Seega on seade lisatud, kuid hetkel teie seadeid ei salvestata. Teeme selle korda.

Kohandatud seadete salvestamine

update()Kohandatud seadete värskendamiseks peame kasutama vidina funktsiooni.

Selleks kasutame filtrit [widget_update_callback](https://developer.wordpress.org/reference/hooks/widget_update_callback/). Meie seadete salvestamise protsess on täpselt sama, nagu teeksite vidinaklassi kirjutamisel. Filter pakub kolme parameetrit; esimene on eksemplari massiiv, mis salvestatakse. Teine parameeter on olek, mis on vidina salvestamisel postitatud, ja kolmas on vana olek. Peame kindlasti hankima oma uued väärtused teisest parameetrist ja lisama need esimesele.

Nii värskendaksime oma märkeruudu olekut; kui tahame a truevõi falseväärtust salvestada:

add_filter('widget_update_callback', function($instance, $new_instance, $old_instance) { $instance['awp-custom-setting'] = isset($new_instance['awp-custom-setting']); return $instance; }, 10, 3);

Ärge unustage kohandada sisendite nimesid vastavalt oma seadete nimedele. Kui lisate mitu sisendit, peate seda iga kord korrama.

Nüüd peaksite nägema, et teie kohandatud seaded salvestatakse administraatorisse!

Salvestatud kohandatud vidina seadete kasutamine

Nagu varem mainitud, sõltub see osa tõesti sellest, mida soovite oma seadetega teha. Kahjuks pole see nii lihtne, sest enamik vidinaid ei lisa oma väljunditesse filtreid ega konkse. Alustame millestki lihtsast; vältige seadetest olenevalt vidina renderdamist.

Väldi renderdusvidinat sõltuvalt kohandatud sättest

Oletame, et lisate seadeid, millal vidin peaks nähtav olema; näiteks peita see teatud mallides (peida otsingutulemuste mallis, kuid kuvada esilehel ja üksik) või reageerida muudele WordPressi olekutele.

Selleks saame kasutada filtrit [widget_display_callback](https://developer.wordpress.org/reference/hooks/widget_display_callback/). Peame vaid kontrollima meie sätte jaoks antud eksemplari parameetrit ja tagasi pöörduma, falsekui me ei soovi vidinat renderdada.

See lihtne kood väldib vidina renderdamist, kui on märgitud ülaltoodud kohandatud märkeruut:

add_filter('widget_display_callback', function($instance, $widget, $args) { if ($instance['awp-custom-setting']) { return false; } return $instance; }, 10, 3);

Tõenäoliselt soovite võrrelda teisi riike. See on lihtne näide, kus meie märkeruut on märkeruut „Peida üksikute postituste vaadetes". Kontrollime lihtsalt, kas oleme praegu mõne postituse vaates, [is_singular](https://developer.wordpress.org/reference/functions/is_singular/)()ja kui ruut on märgitud, naaseme false.

add_filter('widget_display_callback', function($instance, $widget, $args) { if (is_singular() && $instance['awp-custom-setting']) { return false; } return $instance; }, 10, 3);

Olemasoleva vidina seadete või väljundi muutmine

Võimas filter, mida kasutada olemasolevate vidinatega mängimiseks, on [dynamic_sidebar_params](https://developer.wordpress.org/reference/hooks/dynamic_sidebar_params/). Vaadake dokumentatsioonilehte, et näha, milliseid parameetreid saate muuta. Näiteks saate lisada kohandatud klasse, muuta before_widget, after_widgetvõi before_titleja after_titleHTML-stringe. Kuid see kehtib kõigi vidinate, ka administraatori ja kasutajaliidese kohta. Ja selle filtriga pole teil juurdepääsu vidina eksemplarile (salvestatud seaded) ega vidina seadetele (nt vidina tüüp).

Ilmselgelt peame vähemalt oma kohandatud seadeid kontrollima. Seega peame vajalike väärtuste hankimiseks tegema üsna palju koodi.

Esimene asi, mida saame teha, on juurdepääs globaalsele muutujale $wp_registered_widgets. See on massiiv, mis sisaldab kõiki registreeritud saadaolevaid vidinaid. Seda registrit kasutades saame kasutada filtri parameetrit konkreetse vidina leidmiseks, kus praegu oleme. Kui oleme praeguse vidina leidnud, on meil juurdepääs vidina parameetritele, näiteks id_base– mis, nagu varem nägime, ütleb meile vidina tüübi.

Nagu näete järjekorras, #9saame lõpuks kontrollida, millist tüüpi vidinaid me praegu kasutame. Ülaltoodud koodis tagastan, kui vidina tüüp ei ole navigeerimisvidin, kuna meie kohandatud seade lisati ainult nende vidinate jaoks.

Salvestatud vidina seadete toomine

Kuid me peame laadima ka salvestatud sätted iga vidina kohta (sealhulgas meie kohandatud sätted). Kõik vidinate salvestatud sätted salvestatakse suvandite andmebaasi, mis on rühmitatud vidina tüübi järgi. Kasutades atribuuti vidinaregistris, saame kasutada [get_option](https://developer.wordpress.org/reference/functions/get_option/)()praeguse vidinatüübi salvestatud sätete toomiseks. Tagastus on indekseeritud massiiv, kus peame praeguse indeksi leidmiseks kasutama veel ühte filtrist pärit perimeetrit (kuna samale või erinevatele külgribadele saate lisada mitu sama vidina tüüpi). Seda on lihtsam koodiga näidata kui seletada:

Lõpuks saame kätte vidina salvestatud seaded! Ülaltoodud näidiskoodis real #9, kontrollime, kas meie kohandatud märkeruut on märgitud või mitte.

Näited

Praegu on teie otsustada, mida soovite teha. Näiteks saate väljundi renderdada pärast vidina pealkirja, kuid enne vidina sisu:

Tõelisemate kasutusjuhtude puhul lahendate tavaliselt teatud filtrite lisamisega, helistades add_filter().

Allpool on näide navigeerimismenüü argumentide muutmisest filtri lisamise teel, kui meie säte on märgitud. Kui see oli märkimata, veendume, et filter on eemaldatud. Navigeerimismenüü renderdamise argumentide muutmise filter on widget_nav_menu_args. Allolevas koodis olen määratlenud sellele filtrile rakendatava funktsiooni, mis lisab menüü argumentidele uue argumendi; jalutaja:

... if ($saved_settings['my-custom-thing']) { add_filter('widget_nav_menu_args', 'awp_add_menu_walker', 10, 3); } else { remove_filter('widget_nav_menu_args', 'awp_add_menu_walker', 10); } return $params; }); function awp_add_menu_walker($nav_menu_args, $nav_menu, $args) { $nav_menu_args['walker'] = new AWP_Custom_Walker(); return $nav_menu_args; }

Ülaltoodud kood on näide kasutusjuhtumist, kus kohandatud märkeruut määrab, kas menüüle menüükäijat rakendada või mitte. Suurepärane, kui soovite, et kõik menüüd renderdataks normaalselt, kuid soovite, et teatud menüüvidinad renderdaksid teisiti. See, mida kõndija menüüväljundiga teeb, on teie otsustada.

Vaadake altpoolt täielikku koodi kõigisse navigeerimismenüüdesse kohandatud seadistuse lisamiseks, selle värskendamiseks ja menüükäija rakendamiseks.

Loodetavasti piisab sellest, et saaksite aru, kuidas kodeerida seda, mida soovite teha. See sõltub tõesti sellest, mida soovite teha ja millist tüüpi vidinaga töötate. Nagu eespool mainitud, saab enamiku muudatustest tavaliselt lahendada, lisades filtreid, et oma asju teha dynamic_sidebar_params.

Täielik näide: kohandatud märkeruudu säte navigeerimisvidinates menüükäija rakendamiseks

Siin on täielik kood kohandatud märkeruudu lisamiseks kõigile WordPressi navigeerimismenüü vidinatele registreeritud menüükäija kasutamiseks. (Walkeri kood ei kuulu komplekti)

Järeldus

Loodetavasti on see postitus aidanud teie vajadusi lahendada või anda teile näpunäiteid selle kohta, kuidas saate teha seda, mida peate tegema!

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