Oleme lõpuks jõudnud WordPressi vidina katlaplaadi ümbertöötamist käsitleva seeria viimase postituse juurde. Selle postituse lõpuks saame valmis oma koodi arendusharu ja oleme valmis kõik põhiharusse liitma.
Siiski on veel natuke tööd teha. Nimelt :
Viimane asi, mida me pärast seda vaatame, on tingimusliku loogika karmistamine koos sõnaga andmete vahemällu salvestamise kohta (kuna me teeme seda juba varasemates postitustes).
Nii et need on kaks asja, mida me selles postituses vaatleme. Täpsemalt vaatleme esiotsa tingimusloogika käsitlemist ja seejärel põhilist vahemällu rakendamist.
WordPressi vidina katlaplaat: ümberkujundamine, 13. osa
Enne kui jõuame üksikasjade viimasesse vooru, tahan veenduda, et kasutate koodi uusimat versiooni, kuna see on ainus kord, mil minu arvates on hädavajalik, et kood oleks viimase muudatuste vooru jaoks valmis.
Nii et kui teie arvutis kood ei tööta, on nüüd õige aeg. Viimane kooditükk, mille kallal peame töötama, on üsna väike.
Kuid on oluline veenduda, et kasutate uusimat versiooni. Nii et kui olete uusima koodi välja tõmmanud, oleme valmis selle lõpetama.
1 Esiosa renderdamine
Tuletame meelde, et eelmises postituses renderdasime vidinate üldise teabe – pealkirja, sisu ja selle, kas pealkirja tuleks kuvada või mitte –, kuvades lihtsalt esiotsas olevad väärtused.
Kuid nüüd on aeg seadistada teave veendumaks, et me ei renderda teavet ainult vidina haldusala valikute põhjal, vaid ka selle, kas teavet üldse on.
Nii et alustame kõige lihtsamast valikust: valik, mis võimaldab meil pealkirja kuvamist ümber lülitada. Teisisõnu eeldame, et väärtused on täidetud ja see valik on taustaprogrammis märgitud.
Tuletame meelde, et Widget.php fail näeb praegu välja selline :
<?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.
*/
?>
<div id="<?php echo $args['id']; ?>">
<h3 class="widget-title"><?php echo $instance['title']; ?></h3>
<p><?php echo $instance['content']; ?></p>
<pre><?php echo $instance['display-title']; ?></pre>
</div><!-- #<?php echo $args['id']; ?>-->
Nii et me hakkame kõigepealt selle osa ümber kujundama. Muidugi on seda suhteliselt lihtne tutvustada, eks? See tähendab, et loogika on järgmine:
- Kui pealkirja kuvamise valik on märgitud, siis näitame pealkirja; muidu me mitte.
Seda saab lahendada lihtsa if – lausega, hinnates meil oleva kuvatava pealkirja suvandi väärtust. Tänu sellele, kuidas oleme funktsiooni selle seeria jooksul üles ehitanud, on selle valiku märkimisel võimalus sisse lülitada ; muidu on see tühi.
See tähendab, et saame seadistada sellise tingimuse sama koodiga, mida oleme eespool jaganud :
<?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.
*/
?>
<div id="<?php echo $args['id']; ?>">
<?php if (isset($instance['display-title']) && 'on' === $instance['display-title']): ?>
<h3 class="widget-title"><?php echo $instance['title']; ?></h3>
<?php endif; ?>
<p><?php echo $instance['content']; ?></p>
</div><!-- #<?php echo $args['id']; ?>-->
Sel viisil, kui valik on märgitud, kuvatakse pealkiri.
Selle tagajärg
Üks asi, mida ma arvan, väärib mainimist, on see, et mõnikord saavad inimesed vidinaid aktiveerida, kuid valida sisu puudumise. Muidugi võite vaielda, et kui nad seda teevad, on see nende süü.
Selles on tõde.
Kuid ma arvan ka, et hoolitseda kasutajate eest, kes võivad asju välja mõelda või olla kogemata teinud midagi, mida nad ei teadnud, et saavad neid aidata. Võib-olla muudab see meid vastutustundlikeks arendajateks (või võib-olla muudab see meid agressiivsemaks – valige oma valik, ma olen esimesega).
Seega arvan, et antud juhul tasub jälgida, et pealkiri ja sisu tühjad ei oleks. Kui on, siis ärge renderdage midagi.
Seejärel näeb kood välja selline :
<?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.
*/
?>
<?php if (empty($instance['title']) && empty($instance['content'])): return;
endif; ?>
<div id="<?php echo $args['id']; ?>">
<?php if (isset($instance['display-title']) && 'on' === $instance['display-title']): ?>
<h3 class="widget-title"><?php echo $instance['title']; ?></h3>
<?php endif; ?>
<p><?php echo $instance['content']; ?></p>
</div><!-- #<?php echo $args['id']; ?>-->
Ja see lõpetab selle esiotsa osas. Kuidas on aga vahemällu salvestamisega, millest ühes varasemas postituses rääkisime?
2 Tutvustame vahemällu salvestamist
Vahemällu salvestamine on sellise vidina jaoks midagi, mida ma pean valikuliseks, kuid kuna oleme vahemälu tühjendamiseks Boilerplate’i põhifunktsioonid sisse ehitanud, siis loogiliselt järeldub andmete vahemällu salvestamise funktsiooni kasutuselevõtt, eks?
Nii et teeme seda. See ei tohiks ka raske olla. Tegelikkuses võtame lihtsalt pealkirja, sisu ja märkeruudu ning salvestame vahemällu antud vidina eksemplari väärtused.
Selleks peame leidma vidina funktsiooni ja seejärel tegema järgmist.
Esiteks tutvustame vidina vahemällu salvestamise funktsiooni :
<?php
/**
* Caches the values for the instance of this widget.
*
* @param array $args argument provided by WordPress that may be useful in rendering the widget
* @param array $instance the values of the widget
*/
private function cacheWidget($args, $instance)
{
$cache = [];
$cache['widget_id'] = $args['widget_id'];
$cache['title'] = empty($instance['title'])? '': $instance['title'];
$cache['content'] = empty($instance['content'])? '': $instance['content'];
$instance['display-title'] = isset($instance['display-title'])? $instance['display-title']: '';
$cache['display-title'] = $instance['display-title'];
wp_cache_set($this->getWidgetSlug(), $cache, 'widget');
}
Seejärel tutvustame funktsiooni vidina vahemällu salvestatud versiooni toomiseks :
<?php
/**
* @return array the cached instance of this widget if it's not empty
*/
private function getCachedWidget()
{
$cache = wp_cache_get($this->getWidgetSlug(), 'widget');
if (!empty($cache)) {
return $cache;
}
return [];
}
Seejärel vaatame uuesti läbi algse funktsiooni, et veenduda, et kuvame vajaliku. Kui vahemälu on tühi, siis me ei tee muud, kui kuvame väärtused nii, nagu need on.
<?php
/**
* Displays the widget based on the contents of the included template.
*
* @param array $args argument provided by WordPress that may be useful in rendering the widget
* @param array $instance the values of the widget
*/
public function widget($args, $instance)
{
// Get a cached version of the widget. If it's empty, cache what we have.
$cache = $this->getCachedWidget();
if (empty($cache)) {
$this->cacheWidget($args, $instance);
}
return $this->widgetDisplay->show($args, $instance);
}
Ja see lõpetab täielikult ümbertöödeldud Widget Boilerplate’i funktsioonid.
Lõpp
See tõsine asi on kestnud kaua. Isiklikult on olnud väga hea WordPress Widget Boilerplate uuesti üle vaadata ja viia see kaasaegsematele standarditele.
Pean veel tegema mõned asjad, näiteks värskendama README-faili ja andma seejärel veel mõned juhised, enne kui ma selle põhiharuga ühendan, kuid kui olete kogu seda seeriat jälginud, olete tõenäoliselt kaasas koos kõigega. Lisaks hindan ma kõrgelt, et veetsite sellega tegelemise aega ja loodan, et see oli teile mõnel tasandil kasulik.
Seda arvestades kavatsen liikuda lühema vormiga esmaklassilise sisu poole, kuna see sari ja viimane olid üsna pikad. Nagu tavaliselt, võite alati minuga ühendust võtta või vajadusel tõmbetaotlusi pakkuda – see on avatud lähtekoodiga ja see tervitab ka täiustusi.
Praegu aga lõpetab see seeria.