İş masası üçün vidcetin yaradılması. Sıfırdan Windows Sidebar Gadget-ın yazılması Vidjetlər yaradın




Bu gün biz bir Android cihazında öz vidcetinizi (Widget) necə yaratacağınızı anlayacağıq. Vidcet iş masasının tanış elementidir, onun vasitəsilə siz proqramın bəzi funksiyalarına daxil ola bilərsiniz: vidcet pəncərəsində xəbərlərə baxmaq, hava proqnozu, müxtəlif xidmətlərdə xəbərləri yeniləmək, cihazın müxtəlif funksiyalarını idarə etmək (ekranı kilidləmək, radio, İnternet və bir çox başqalarını yandırın). Bu dəfə biz orada fənər kimi möhtəşəm və çox faydalı bir şey yaratmayacağıq :), ancaq bir düymə kimi həyata keçiriləcək sadə bir widget edəcəyik, üzərinə kliklədikdə, standart bir brauzerdən istifadə edərək, hər kəsin sevimlisinə çatırıq. sayt.Əlbəttə ki, istədiyiniz saytı özünüzə uyğunlaşdıra bilərsiniz.

Yeni layihə yaradırıq, Android 2.2+ proqramının minimum versiyası olan Blank Activity seçin. Vidcet yaradarkən görüləcək ilk şey obyekt yaratmaqdır AppWidgetProviderInfo, burada vidcetin özünün görünüşünün doldurulacağı xml faylını təyin edirik. Bunu etmək üçün layihədə bir qovluq yaradın res/xml və orada biz adlı yeni xml faylı yaradırıq widget.xml aşağıdakı məzmunla:

< appwidget- provider xmlns: android= android: minWidth= "146dp" android: updatePeriodMillis= "0" android: minHeight= "146dp" android: initialLayout= "@layout/activity_main" > < / appwidget- provider>

İndi fayla keçək fəaliyyət_main.xml və widgetımızın interfeysini yaradın, o, bir düymədən ibarət olacaq düyməsi:

< LinearLayout xmlns: android= "http://schemas.android.com/apk/res/android" xmlns:tools= "http://schemas.android.com/tools" android: layout_width= "match_parent" android: layout_height= "match_parent" android: gravity= "top" tools: context= ".MainActivity" >< Button android: id= "@+id/button" android: layout_width= "wrap_content" android: layout_height= "wrap_content" android: layout_marginLeft= "5dp" android: text= "@string/app_name" / > < / LinearLayout >

Gördüyünüz kimi, biz adi bir düymə yaratdıq, ona görə də bu bizim widgetımız olacaq:

Yəni, sonra bu düymənin yerinə istədiyinizi edə bilərsiniz.

Fayldakı kodla işləməyə keçək MainActivity.java. O, sinifdən miras alınmalıdır AppWidgetProvider, bunun üçün onun əsas metodu mövcuddur onUpdate(). Bu metodda iki obyekti müəyyən etməliyik: Gözləyən Niyyətuzaqdan baxışlar. Onların istifadəsinin sonunda metodu çağırmaq lazımdır UpdateAppWidget(). Fayl Kodu MainActivity.java:

idxal android.net.Uri ; idxal android.app.PendingIntent ; idxal android.appwidget.AppWidgetManager; idxal android.appwidget.AppWidgetProvider; idxal android.content.Context ; idxal android.content.Intent ; idxal android.widget.RemoteViews ; idxal android.widget.Toast ; import com.example.widget.R ; ictimai sinif MainActivity AppWidgetProvider-i genişləndirir( @Override public void onUpdate (Kontekst konteksti, AppWidgetManager appWidgetManager, int appWidgetIds ) ( üçün (int i= 0 ; i)< appWidgetIds. length; i++ ){ int currentWidgetId = appWidgetIds[i]; //Göstərilən linkə sadə http sorğusu göndərin və ona əməl edin: String url = "http://site" ; Niyyət niyyəti = yeni Niyyət (Niyyət . ACTION_VIEW); niyyət. addFlags(Niyyət . FLAG_ACTIVITY_NEW_TASK); niyyət. setData(Uri .parse(url)); //İki tələb olunan sinif obyektlərini PendingIntent və RemoteViews təyin edin: PendingIntent gözləyir = GözləyənNiyyət. getActivity(kontekst, 0, niyyət, 0); RemoteViews görünüşləri = yeni RemoteViews(context.getPackageName(),R.layout.activity_main); //Vidcet əlavə etmək üçün klik emalını qurun: baxışlar. setOnClickPendingIntent(R . id. düyməsi, gözləyir); appWidgetManager. updateAppWidget(currentWidgetId,baxışlar); Qızartmaq. makeText(kontekst, "Vidjet əlavə edildi", Qızartmaq . LENGTH_SHORT). göstər(); )))

Vidcetimizin uğurla işləməsi üçün manifest faylında bir az sehr lazımdır AndroidManifest.xml. Bu belə görünməlidir:

< manifest xmlns: android= "http://schemas.android.com/apk/res/android" paket="com.example.widget" android:versionCode="1" android:versionName="1.0">< uses- permission android: name= "android.permission.INTERNET" / > < application android: allowBackup= "true" android: icon= "@drawable/ic_launcher" android: label= "@string/app_name" android: theme= "@style/AppTheme" > < receiver android: name= "home.study.MainActivity" > < intent- filter> < action android: name= "android.appwidget.action.APPWIDGET_UPDATE" / > < / intent- filter> < meta- data android: name= "android.appwidget.provider" android: resource= "@xml/widget" / > < / receiver> < / application> < / manifest>

Təxmin etdiyiniz kimi, widget etiketdə müəyyən edilmişdir<qəbuledici> .

Düzəliş etmək üçün qalan yeganə şey faylı redaktə etməkdir strings.xml, istifadə etdiyimiz sətirləri oraya əlavə edirik:

< ? xml version= "1.0" encoding= "utf-8" ? > < resources> < string name= "app_name" >ÖYRƏNİN. ANDROID < string name= "action_settings" >Parametrlər < string name= "hello_world" >salam dünya!< / string> < / resources>

Diqqət! Proqramı başlatdığınız zaman Android Studio sizi danlaya bilər, sizdən standart fəaliyyət göstərməyinizi tələb edirəm. "Fəaliyyətə başlamayın" sətrini seçin (Fəaliyyəti işə salmayın):

İndi proqramı emulyatora və ya cihaza quraşdırın, vidceti masaüstünə əlavə edin:

Və üzərinə klikləyin:


Gördüyünüz kimi, hər şey əla işləyir.

Beləliklə, bu dərslikdə biz Düymə düyməsindən ibarət sadə Android Widget yaratdıq, widgetımıza kliklədikdə sadə http sorğusu yaradırıq və verilmiş URL linkini izləyirik. Siz düymə ilə deyil, bəzi digər elementlərlə məşq edə və onlar üçün maraqlı funksionallıq tapa bilərsiniz. Uğurlar!

Üçün android-də widget yaradın Hətta proqramlaşdırmağı bilmək lazım deyil. Widget çəkməyi asanlaşdıran və ona istədiyiniz funksionallığı verən bir neçə dizayner proqramı var.

Minimal Mətn

Tətbiq mətn və rəqəmlərdən ibarət minimalist vidjetlər yaratmağa imkan verir. Adına baxmayaraq, bu vidjetlərin çox geniş imkanları var.

Quraşdırıldıqdan sonra, istədiyiniz ölçüdə Minimalist Mətn vidcetini masaüstünüzə əlavə edin. Widget parametrləri pəncərəsi açılacaq.

Parametrlərdə fon, oriyentasiya, şrift, klik hərəkəti və s. seçə bilərsiniz. Ayrıca parametrlərdə doldurmaq üçün əvvəlcədən təyin edilmiş planlar var:

  • Vaxt.
  • Tarixi.
  • Doldurma səviyyəsi.
  • Temperatur.

Vidceti doldurmaq üçün əlavə funksiyalar öz vidcet tərtibatınızı yaratarkən mövcuddur:

  • Mətn.
  • SD kartda boş/istifadə edilmiş yer.
  • Sistemin işləmə müddəti.
  • Mobil şəbəkə üzərindən ötürülən məlumatların miqdarı və təkcə.
  • Wi-Fi şəbəkəsinin adı, Wi-Fi şəbəkəsindəki IP ünvanı.
  • İşğal edilmiş RAM miqdarı.

Bütün dəyərlər mətn və rəqəmlərlə göstərilə bilər.

Son fərdi vidcet (UCCW)

Bu proqram sizə təkcə mətndən deyil, həm də qrafik məzmunlu vidjetlər hazırlamağa imkan verir.

Başladıqda, widget yaratma pəncərəsi açılır. Vidcetə obyekt əlavə etmək üçün yuxarıdakı +/- düyməsini sıxın. Onu hər hansı şəkildə köçürmək və redaktə etmək üçün yuxarıdakı "Obyekt Seç" düyməsini klikləyin və əlavə edilmiş obyekti seçin.

Vidjetlərdə aşağıdakı obyektlər ola bilər:

  • Həftənin vaxtı, tarixi və günü.
  • Analoq saat.
  • Fərdi mətn.
  • Şarj səviyyəsi rəqəmlərlə və ya onun qrafik ekranı.
  • Bütün hava məlumatları - temperatur, rütubət, küləyin sürəti və s.
  • Həndəsi fiqurlar.
  • Şəkillər.
  • Oxunmamış Gmail e-poçtlarının, smslərin və buraxılmış zənglərin sayı.
  • Siqnalın çalma vaxtı.

Hər bir element döndərilə, uzana, əyilə və rəngi dəyişdirilə bilər. Əlbəttə ki, klik hərəkətini fərdiləşdirə bilərsiniz (Obyekt seçin->Qaynar nöqtələr). Yaradılmış vidjetlərin idxalını və ixracını dəstəkləyir.

Android əməliyyat sistemi bir çox xüsusiyyət və imkanlara malikdir. Onlardan biri vidjetlərdir - proqramın funksionallığının bir hissəsini işə salmadan istifadə etməyə imkan verən pəncərələr.

Əsasən, vidjetlər proqramla birlikdə gəlir. Ancaq bu seçimi olmayan proqramlar var. Beləliklə, işləri öz əlinizə almalısınız!

  • Play Marketdən istifadə edərək biz pulsuz olaraq əldə edilə bilən "KWGT Kustom Widget Maker" proqramını yükləyirik, lakin bəzi funksiyalar yalnız əlavəni satın aldıqdan sonra mövcud olacaq.

Proqram müxtəlif tərtibatçılardan üçüncü tərəf vidjetlərini işə salmaq üçün platforma kimi çıxış edir. Bundan əlavə, siz widgetların görünüşünü dəyişdirə, onlara əlavə funksionallıq verə bilərsiniz.


Əvvəlcə, "KWGT Kustom Widget Maker" ın proqram inkişaf proqramlarına bənzəyən mürəkkəb bir proqram olduğunu düşünə bilərsiniz. Bəli və yox: interfeys oxşardır, lakin burada mürəkkəb bir şey yoxdur.


Vidcetləri redaktə etməyə başlamaq üçün:

  • masaüstünə gedin və menyu düyməsini basıb və ya ekrana uzun müddət toxunaraq iş masasının redaktə menyusuna zəng edin;
  • "KWGT" vidjet çərçivəsini tapın və tələb olunan ölçüsü təyin edin, məsələn - 4x2. Bundan sonra iş masasında bir pəncərə yaranır;
  • Pəncərəni vururuq, bununla da widget seçim menyusunu açırıq;
  • Bəyəndiyiniz tərtibatı seçin və üzərinə klikləyin (Əlavə planları Play Store-dan yükləmək olar. Bunun üçün proqram axtarış panelində “KWGT vidjetləri”ni qeyd edin);
  • Bəyəndiyiniz tərtibatı seçdikdən sonra proqram onun redaktəsinə davam edəcək. Aşağıdakı parametrlər mövcud olacaq:
  1. Vidcetin həndəsi parametrlərini təyin etmək üçün məsul olan elementlər;
  2. Fon, vidcetdəki fon şəklinə cavabdehdir;
  3. Widget aktivləşdirildikdə yerinə yetiriləcək hərəkətləri təyin edən toxunma;
  4. Vidcetin miqyasına cavabdeh olan təbəqə;

Nəticədə, biz lazımi funksionallığı olan unikal bir widget alacağıq.

Bu yaxınlarda Windows Sidebar üçün qadcet yaratmalı oldum. Bunda heç bir bacarığım yox idi, ona görə də bir az axtarışdan və sənədləri oxuduqdan sonra başlayaq.

Mən sizə nə ilə nəticələndiyimi göstərəcəyəm


Qadcet saytdan xml şəklində məlumat alacaq, təhlil edəcək və əslində onu göstərəcək. Həmçinin, gadget yeni versiyaları yoxlayacaq və onlar varsa, işləməkdən imtina edəcək :)
Əvvəlcə təcrübə qazanmaq üçün qadceti tamamilə VBScript-də yazmaq istədim (çünki onunla hələ məşğul olmamışdım), amma sonda JavaScript-də əlavələr etməli oldum.
Gəlin birbaşa koda keçək. Mən burada bütün kodları nəzərdən keçirməyəcəm, yalnız əsas məqamları göstərəcəyəm. Bitmiş gadgeta keçid məqalənin sonundadır.
Qadcetin əsas faylı onun manifestidir, Gadget.xml faylıdır. O, belə adlandırılmalı və arxivimizin kökündə yerləşməlidir (qadcet .gadget uzantılı ZIP arxivindən başqa bir şey deyil).

Hava Info.Denms.Ru 1.0.1232 Tam Hava Vidceti (Info.Denms.Ru)

Bunu daha ətraflı nəzərdən keçirək.
Element 1.0.0-a (hazırda) bərabər apiVersion, həmçinin gadgetımızın əsas faylını təyin edən src atributunu ehtiva etməlidir;
Qadcet icazələri. Tam bərabər təyin edin;
Windows Sidebar-ın minimum versiyası. Hazırda - 1,0;
Seçimlər - gadget adı, - versiya, - müəllif haqqında məlumat; - gadget ilə səhifəyə keçid, - gadget simvolu və quraşdırılmış qadcetlər panelində göstəriləcək.

main.html faylı adi html faylıdır, onu tam verməyəcəyəm, yalnız bəzi məqamların üzərində dayanacam.
g:background elementi qadcetin fonunu müəyyən edir. Gəlin bunu şəffaf edək.

Gadget iki vəziyyətdə ola bilər - docked (yuxarıdakı ekran görüntüsündə solda) və açılmamış (sağda). Biz qadcetin cari vəziyyətini JavaScript docked dəyişənində saxlayacağıq.

VBScript-dən gadgetın cari vəziyyətini öyrənmək üçün gələcəkdə isDocked sarğı funksiyasına ehtiyacımız olacaq (çünki cəhd etməmişəm, lakin onu təmiz VBScript-də həyata keçirə bilmədim). Daha bir qeyd - skriptlər bu qaydada düzgün işləyir, yəni. əvvəlcə VBScript skriptlərini, sonra isə JavaScript-i təsvir edirik.

main.html-də qalan elementlər mütləq yerləşdirilmiş DIV elementləri ilə təmsil olunur. Sonradan, skriptlərdən biz onlara id-lərinə istinad edəcəyik.

JavaScript istifadə edərək, qadcet üçün docked və undocked dövlətləri təyin edin, həmçinin parametrlər faylını (main.js) təyin edin.

System.Gadget.onDock = ölçüsünü dəyişdirin; System.Gadget.onUndock = ölçüsünü dəyişdirin; System.Gadget.settingsUI = "settings.html"; System.Gadget.onSettingsClosed = SettingsClosed; docked=0; //qadcetin ilkin vəziyyəti resize(); //inisiallaşdırma

Yuxarıdakı siyahıdan göründüyü kimi, gadget vəziyyətləri dəyişdikdə, resize() funksiyası çağırılacaq.

Funksiya ölçüsünü dəyişdirin() ( bd = document.body.style; System.Gadget.beginTransition(); if (System.Gadget.docked) ( // kiçik vəziyyət bd.width=148; //qadcetin ölçülərini təyin edin bd.height=201 ; docked = 1; bd.background="url(images/gadget.png) no-repeat"; //arxa fonu təyin edin //docked vəziyyətdən docked vəziyyətə dəyərləri köçürün və undocked üçün elementləri sıfırlayın state document.getElementById("small_needupdate").innerHTML = document.getElementById("big_needupdate").innerHTML; document.getElementById("big_needupdate").innerHTML = ""; //... ) başqa ( // böyük dövlət bd .width=230; bd. height=160; bd.background="url(images/gadgeth.png) no-repeat"; docked=0; //dəyərləri docked vəziyyətindən docked vəziyyətə köçürün və docked vəziyyət üçün elementləri sıfırlayın document.getElementById("big_needupdate"). innerHTML = document.getElementById("small_needupdate").innerHTML; document.getElementById("small_needupdate").innerHTML = ""; //... ) System.Gadget.endTransition(SystemTransition). Gadget.TransitionType.morph,1); )

Saxlama parametrləri funksiyasını da təsvir edə bilərsiniz. Onlar mənim gadgetımda deyil, amma nümunə üçün bunun necə edildiyini göstərəcəyəm

Function SettingsClosed(event) ( if (event.closeAction == event.Action.commit) ( //alert System.Gadget.Settings.readString("test"); ) )

ReadString - əvvəllər saxlanmış sətri oxuyur, müvafiq olaraq writeString yazır.
Metodlar System.Gadget.beginTransition(); və System.Gadget.endTransition(); gadgetın ölçüsünü "rəvan şəkildə" dəyişdirmək lazımdır. Windows Seven-də bunlara məhəl qoyulmur, lakin mən onları geriyə uyğunluq üçün tərk etdim.

Yuxarıda qeyd edildiyi kimi, server bizə xml formatında hava məlumatı təqdim edir.

1,7 41 buludlu qar 87 SW 5 -3 -1 -1 26 1 -9 41 0 …

Biz VBScript istifadə edərək xml-i yükləyib təhlil edəcəyik.

Sub DownloadXML2 Set objXML = CreateObject("Microsoft.XmlHttp") objXML.Open "GET", "http://info.kovonet.ru/weather.xml", True objXML.OnReadyStateChange = GetRef("objXML_onreadystatechange") objquestHeder. "Əgər-Dəyişdirilib-Since", "Şənbə, 1 Yanvar 2000 00:00:00 GMT" objXML.Send iTimeoutID = window.SetTimeout("mySleep", 1000) Son Alt

mySleep funksiyası əlaqəmizi fasilə üçün yoxlayacaq.

Sub mySleep əgər bRespReceived = "false" sonra "hələ cavab alınmayıbsa iTimeout = iTimeout + 1 əgər (iTimeout > 30) sonra "timeout timerFirstRun = window.SetTimeout("Update", 60000) "bir dəqiqə sonra yenidən yeniləməyə cəhd edin "zaman aşımı hələ əldə olunmayıb, saniyələri hesablamağa davam edin iTimeoutID = window.SetTimeout("mySleep", 1000) əgər bitərsə, End Sub

Yükləmə uğurlu olarsa, objXML.readyState dördə bərabər olacaq və status (objXML.status) 200 dəyərini qaytaracaq.

Funksiya objXML_onreadystatechange() Əgər (objXML.readyState = 4) Sonra "msgbox objXML.statusText Əgər (objXML.status = 200) Sonra bRespReceived=true SaveFile(objXML.responseText) başqa windows timerFirstSetRun =()0dap"i" bir dəqiqə ərzində End If End Funksiyasını yenidən yeniləməyə cəhd edin

Bu halda, faylı müvəqqəti Windows qovluğunda saxlayın

Funksiya SaveFile(nə) Set fso = CreateObject("Scripting.FileSystemObject") tempFolder = fso.GetSpecialFolder(2) filepath = tempFolder+"\weather.xml" Dim fso1, tf Set fso1 = CreateObject("Scripting.FileSystem"SystemOf) = fso1.CreateTextFile(filepath, True, True) "yenidən yazın, unicode tf.Write(nə) tf.Close ParseXML End Function

Və faylı təhlil etməyə başlayırıq.

Sub ParseXML Set fso = CreateObject("Scripting.FileSystemObject") tempFolder = fso.GetSpecialFolder(2) filepath = tempFolder+"\weather.xml" Set xmlDoc = CreateObject("Msxml2.DOMDocument") xmlDoc.async="false." load(filepath) "master node - bizim vəziyyətimizdə currNode = xmlDoc.documentElement "həftənin günlərini təyin edin - DayNode = currNode.firstChild DayNode deyilkən təyin et currNode = dayNode.firstChild deyilsə currNode = DayNode.firstChild currNode Heç bir şey deyilsə currNode.parentNode.getAttribute("id") = "bu gün" sonra "bu gün əgər currNode.nodeName = "temp" varsa sənəd .getElementById(prefiks+"maintemp").innerHTML = currNode.childNodes(0).text+Chr(176) "digər elementləri göstər Əks halda "bu gün deyil, daha kiçik göstər"... end Əgər currNode = currNode.nextSibling Wend Set dayNode = dayNode.nextSibling Wend End Sub

Yeni versiyaların yoxlanılması tamamilə eyni şəkildə aparılır.
Varlığını yuxarıda elan etdiyimiz settings.html - parametrlər faylı yaratmağı unutmayın.

Parametrlər

Əslində, hamısı budur. (Birinci :)) məqaləm kiməsə faydalı olarsa, şad olaram.

İstifadə olunan mənbələr.

Yaradın WordPress vidceti- bu, təxminən necə bir plagin yaratmaqdır, lakin daha sadə və daha aydındır. Sizə lazım olan hər şey olan bir fayldır PHP birdən çox faylı olan plaqindən daha asan yazmaq asan olan kod. Vidcetin üç əsas funksiyası var: bunlardır widget, yeniləməforma.

  • funksiya vidceti()
  • funksiya yeniləməsi ()
  • funksiya forması()

| Mənbələri yükləyin |

Əsas quruluş

Vidcetimizin əsas tərtibatı çox sadədir, bilməli olduğunuz faydalı xüsusiyyətlər var. Widget strukturumuzun əsası belə olacaq:

Əlavə_fəaliyyət("widgets_init", "vidcetimin_qeydiyyatı"); // widget funksiyamı yükləmək funksiyası register_my_widget() () // vidcet sinifimi qeydiyyatdan keçirmək funksiyası My_Widget WP_Widget-i genişləndirir () () // Misal widget sinfi funksiyası My_Widget() () // Widget Parametrləri funksiyası widget() () // widget funksiyasını göstərin update() () // widget funksiyasını yeniləyin form() () // və əlbəttə ki, widget seçimləri üçün formanı

Addım 1. widget_init

Bütün bunları etməzdən əvvəl vidjetimizi funksiya ilə yükləməliyik widget_init. Bu bir ipucudur hərəkət, haqqında daha çox məlumatı WordPress kodeksində tapa bilərsiniz.

Əlavə_fəaliyyət("widgets_init", "vidcetimin_qeydiyyatı");

Növbəti edəcəyimiz şey budur qeydiyyatdan keçin WordPress-dəki vidcetimiz vidjetlər bölməsində mövcud olsun.

register_my_widget() funksiyası ( register_widget("My_Widget"); )

Addım 2 Sinif

Biz widgetı əlavə edəcəyik Sinif. Sinif adı önəmlidir! Nəzərə almalıyıq ki, sinif adı və funksiya adı olmalıdır eyni.

My_Widget sinfi WP_Widget()-ni genişləndirir

İndi bəzilərini sinfə keçəcəyik seçimlər parametrlər. Məsələn, keçə bilərik enihündürlük. Kiçik də verə bilərik təsviri istəsək widgetımız. Vidceti kommersiya mövzunuzla əlaqələndirirsinizsə, bu faydalı olacaq.

Funksiya My_Widget() ( My_Widget() funksiyası ( $widget_ops = massiv("sinif adı" => "nümunə", "təsvir" => __("Müəllifin adını göstərən vidcet ", "nümunə")); $control_ops = massiv("en" => 300, "hündürlük" => 350, "id_base" => "nümunə-vidget"); $this->WP_Widget("nümunə-widget", __("Nümunə Vidcet", "nümunə" ), $widget_ops, $control_ops); )

İndi vidcetimiz üçün əsas tələbləri tamamladıqdan sonra diqqətimizi ona yönəldəcəyik üç funksiya, əvvəllər haqqında danışdığımız və vidcetimizi qurmaq üçün vacib funksiyalar və ya əsas tikinti blokları olan!

Addım 3. functionwidget()

Birinci funksiya ilə bağlıdır göstərin bizim widget. Bir neçəsini göndərəcəyik arqumentlər funksiyamıza. Mövzudan arqumentləri ötürəcəyik, bu başlıq və ya başqa parametrlər ola bilər. İndi bir dəyişən keçirik misal, bizim funksiya sinifimizlə əlaqələndirilir.

Funksiya vidjeti($args, $instance)

Bundan sonra çıxarırıq seçimlər arqumentlərdən, çünki yerli olaraq mövcud olmaq üçün seçimlərə ehtiyacımız var. Lokal dəyişənin nə olduğunu bilmirsinizsə, indi bu barədə narahat olmayın və sadəcə bu addımı əlavə edin.

Çıxarış($args);

Sonra biz təyin edəcəyik başlıqdigər variantlar widget menyusunda istifadəçi tərəfindən dəyişdirilə bilən vidcetimiz üçün. kimi xüsusi dəyişənləri də əlavə edirik $before_widget, $after_widget. Bu seçimlər mövzu ilə idarə olunur.

$title = application_filters("widget_title", $instance["title"]); $name = $instance["ad"]; $show_info = isset($instance["show_info"]) ? $instance["show_info"] : false; echo $before_widget; // Əgər ($title) echo $befor_title varsa vidcetin başlığını göstərin. $title. $after_title; //($name) printf(" adını göstərin.

" . __("Salam onların dənizçisi! Mənim adım %1$s.", "nümunə") . "

", $adı); əgər ($show_info) printf($name); echo $after_widget;

Addım 4. funksiya yeniləməsi()

Funksiya yeniləməsi($new_instance, $old_instance) ( $instance = $old_instance; //HTML-ni silmək üçün başlıq və addan teqləri ayırın $instance["title"] = strip_tags($new_instance["title"]); $instance[" ad"] = strip_tags($new_instance["name"]); $instance["show_info"] = $new_instance["show_info"]; return $instance; )

Bir şeyi qeyd etmək lazımdır ki, biz burada istifadə edirik strip_tegs bütün mətni silmək üçün XHTML, bizim widgetı poza bilər.

Addım 5. funksiya forması()

Növbəti addımda biz yaradacağıq forma, xidmət edəcək giriş bloku. O, istifadəçi tərəfindən müəyyən edilmiş parametrləri və dəyərləri qəbul edəcək. Funksiya forma onay qutuları, mətn daxiletmə sahələri və s. daxil ola bilər.

Bu giriş sahələrini yaratmazdan əvvəl istifadəçi vidcetdən heç nə seçmədikdə nəyi göstərəcəyimizə qərar verməliyik. Bunu etmək üçün başlıq, təsvir və s. kimi parametrlər üçün standart dəyərlərə keçəcəyik.

//Bəzi standart widget parametrlərini qurun. $defaults = array("title" => __("Nümunə", "nümunə"), "ad" => __("Bilal Shaheen", "nümunə"), "show_info" => doğru); $instance = wp_parse_args((massiv) $instance, $defaults); ?>

İndi biz yaradacağıq giriş mətn sahəsi. Bu dəyərləri paraqraf etiketinə əlavə edəcəyik.

// Vidcetin Başlığı: Mətn Daxiletmə

"adı="alan_adı ("başlıq"); ?>"value=""style="en:100%;" />

// mətn daxil etmək

"adı="alan_adı ("ad"); ?>"value=""style="en:100%;" />

// onay qutusu

id="get_field_id("məlumatı göstər"); ?>"adı="get_field_name("məlumatı göstər"); ?>" />

Nəticə

Tamam, indi hər şey bitdi. Siz indicə bloq müəllifinin adını göstərən öz gözəl və sadə vidcetinizi yaratdınız. Üstəlik, istifadəçiyə məlumatı auditoriyaya göstərib-göstərməmək barədə seçim etmək imkanı verir. Kodu qeyd edin PHP faylı və mövzu qovluğunuza yükləyin. Onu özünüzə zəng edin functions.php. Bundan sonra konsola keçin Görünüş → Vidjetlər və vidcetinizi görəcəksiniz.

Bütün bu kodlar məqaləyə əlavə edilmiş fayla daxil edilmişdir, ona görə də kopyalayıb yapışdırmaq daha asandır. Zövq alın!