Vaikka tämän refaktorointisarjan viimeinen postaus ei ollut uskomattoman pitkä, se oli mielestäni hieman tiivis. Toisin sanoen se vaati melkoisen määrän työtä koodin saamiseen paikkaan, jossa voimme työskennellä sen kanssa helpommin.
Mutta siinä se vain: kaiken tekemämme työn pitäisi helpottaa kirjoitettavan muun koodin siirtymistä eteenpäin.
Ja varmistaaksemme, että hyödynnämme tähän mennessä luomaamme työtä ja perustaa, täydennämme sarjaa lyhyemmillä, keskittyneemmillä artikkeleilla, joiden lukemiseen ja toteuttamiseen tulisi kulua vähemmän aikaa., ja ymmärrämme, mitä teemme koodilla.
WordPress Widget Boilerplate: Refactoring osa 9
Muista viime postauksesta:
Seuraavaksi jatkamme widgetin hallinnollisen alueen toiminnallisuuden rakentamista. Tämän jälkeen kiinnitämme huomiomme widgetin julkiseen puoleen sekä serialisointitoimintoihin.
Ja tämä asettaa meidät tarkalleen mihin olemme menossa tässä postauksessa. Aiomme nimittäin kirjoittaa hallinnollisen käyttöliittymän, jonka avulla voimme:
- määritä widgetille otsikko,
- määrittää widgetin tekstisisältöä,
- ja vaihda, haluammeko näyttää otsikon vai emme.
Sen ei ole tarkoitus olla innovatiivinen eikä se ole sellainen widget, jota kukaan muu saattaa haluta myydä. Sen sijaan sen tarkoitus on näyttää, kuinka voimme hyödyntää sitä, mitä meillä on, luodaksemme jotain samanlaista kuin olemme jo nähneet WordPressissä ja kuinka käytämme vankkoja ohjelmointikäytäntöjä.
Käyttöliittymä: Ensimmäinen passi
Edellisen työmme jälkeen meillä on widget, joka näkyy WordPressin hallintoalueella ja sen voi jopa siirtää sivupalkkiin tai muulle widgetoidulle alueelle; se ei kuitenkaan tee mitään.
Toistaiseksi mennään eteenpäin ja lisätään käyttöliittymään kolme elementtiä:
- lisää tekstisyöttö widgetin otsikoksi,
- sisältää tekstialueelementin, joka näyttää, mikä saattaa olla tekstikappale,
- ja lopuksi lisää valintaruutu vaihtaaksesi otsikkotietoja.
Tätä varten meidän on muokattava Views – hakemistossa olevaa tiedostoa. Aiomme nimittäin päivittää Admin.php- tiedoston. Aloitamme elementeistä täsmälleen tarpeen mukaan ilman ylimääräisiä merkintöjä.
<input type="text" name="widget-title" value="" />
<textarea name="widget-content"></textarea>
<label>
<input
type="checkbox"
value="1"
name="widget-title-enabled"
/>
Display Title?
</label>
Se ei tee vielä paljoa katsottavaa etupäässä, mutta se vie meidät lähemmäs haluamaamme paikkaa.
Luokka järjestelmänvalvojille
Seuraavaksi haluamme varmistaa, että pysymme johdonmukaisesti korkean tason yhteenkuuluvuuden ylläpitämisessä luokkiemme kanssa. Tämä tarkoittaa, että emme tarvitse yhtä luokkaa tekemään kaikkea hallintaan, näyttämiseen ja muihin WordPress API:n vaatimiin töihin.
Tätä varten luomme WordPress – hakemistoon ja nimiavaruuteen toisen luokan nimeltä WidgetAdmin .
Tähän tiedostoon sisällytämme seuraavan koodin :
<?php
/*
* This file is part of WordPress Widget Boilerplate
* (c) Tom McFarlin <tom@tommcfarlin.com>
*
* This source file is subject to the GPL license that is bundled
* with this source code in the file LICENSE.
*/
namespace WordPressWidgetBoilerplateWordPress;
/**
* Manages the administrative functionality of the widget.
*/
class WidgetAdmin extends Widget
{
/**
* {@inheritdoc}
*/
public function __construct($widgetSlug)
{
parent::__construct($widgetSlug);
}
/**
* Displays the administrative view of the form and includes the options
* for the instance of the widget as arguments passed into the function.
*
* @param array $instance the options for the instance of this widget.
*/
public function form($instance)
{
include plugin_dir_path(__FILE__).'Views/Admin.php';
}
}
Sitten alkuperäisessä widgetin luomiskoodissa muutamme tämän rivin :
<?php
/**
* Registers the core Widget class using the WordPress APIs.
*/
public function load()
{
register_widget(new Widget('widget-name'));
}
Näyttääksesi tältä :
<?php
/**
* Registers the core Widget class using the WordPress APIs.
*/
public function load()
{
register_widget(new WidgetAdmin('widget-name'));
}
Muutaman seuraavan artikkelin aikana tämä kehittyy edelleen, mutta kuten näet, varmistamme, että meillä on yksi perustoimintoluokka WordPressin kanssa keskustelua varten ja luokka erityisesti hallinnollisen lomakkeen renderöintiä varten.
Käyttöliittymä: Toinen passi
Lopuksi siivotaan lomake niin, että siinä on hieman enemmän kiinteää käyttökokemusta, joka sulautuu hyvin WordPressin hallintoalueeseen kokonaisuudessaan.
<input type="text" name="widget-title" value="" />
<textarea name="widget-content"></textarea>
<label>
<input
type="checkbox"
value="1"
name="widget-title-enabled"
/>
Display Title?
</label>
Ja päivitä se niin, että se näyttää tältä :
<div class="widget-content">
<p>
<input
type="text"
name="widget-title"
value=""
placeholder="Widget Title"
class="widefat"
/>
</p>
<p>
<textarea
name="widget-content"
placeholder="Widget Content"
style="width:100%;"></textarea>
</p>
<p>
<input
type="checkbox"
value="1"
name="widget-title-enabled"
class="checkbox"
/>
<label for="widget-title-enabled">Display Title?</label>
</p>
</div><!-- .widget-content -->
Olettaen, että kaikki meni hyvin, sinun pitäisi nyt nähdä jotain, joka näyttää tältä:
Ja siihen aiomme lopettaa tämän viestin hallinnolliset ominaisuudet. Muista, että voit seurata kaikkea tätä myös GitHubin kehityshaarassa.
Desinfiointi ja sarjoittaminen
Seuraavassa viestissä tarkastelemme, mitä tarvitaan widgetimme sisällön puhdistamiseen ja sarjoittamiseen (tai puhdistamiseen ja tallentamiseen).
Varmistamme myös, että näytämme tiedot hallintoalueella, kun tiedot on tallennettu ja haettu.
Lopuksi, perinnöllisyys ja luokan yhteenkuuluvuus kehittyvät edelleen, mutta keskity toistaiseksi tähän viestiin, ja jatkamme sitten seuraavassa artikkelissa.
