Kaasake kohandatud mallid meie WordPressi pistikprogrammidesse
Ma arvan, et üks alahinnatumaid aspekte – või võib-olla üks harva arutatud aspekte kohandatud pistikprogrammide arendamise juures – on võimalus lisada meie WordPressi pistikprogrammidesse kohandatud malle.
Ja ausalt öeldes ma saan sellest aru: ma olen üsna kindel, milline peaks olema pistikprogramm ja mis peaks olema teema.
See on:
- teemad on esitluseks,
- pluginad on funktsionaalsed.
Kui ma lisan pistikprogrammi malle, kas ma ei tee sama, mis siis, kui arendajad lisavad oma teemadesse funktsioone?
Nagu paljude asjade puhul, mis on arenduses, arvan, et see sõltub. Ma mõtlen, et paljude funktsioonide lisamine, mis teid teemasse lukustab, on midagi, mille fänn ma ei ole. Samamoodi, kui teil on plugin, mis on mõeldud esiotsa andmete esitlemiseks ja on teemaagnostiline, on see mõistlik.
Seetõttu peate oma otsustes olema mõistlik.
Sellest hoolimata saame kasutada kohandatud mallide lisamisel oma WordPressi pistikprogrammidesse tavalisi toiminguid.
Ja seda see postitus näitab.
Kui kavatsete lisada pistikprogrammi kohandatud malle, siis eeldan, et kasutate nii üksik- kui ka arhiivimalle. Kui ei, kasutage ainult allolevaid konkse ja koodi, mida vajate.
Kuid mõlema jaoks teadke järgmist:
Nende konksude abil saate WordPressile öelda, kus teie pistikprogrammis asuvad kohandatud mallid.
Mallide korraldamine
Minu jaoks on tavaliselt pistikprogrammis mallide kataloog, mis asub varade, src -i ja hankijate kataloogidega samal tasemel .
See muudab nende asukoha leidmise lihtsaks ja annab järjekindla võimaluse lisada need kõigisse teie loodud pistikprogrammidesse. Lõppkokkuvõttes võib öelda, et me oleme kasutatavates tavades järjekindlad.
Kaasa arvatud mallid
Eeldades, et teil on mall single-acme.php ja archive-acme.php mall, on seda lihtne lisada. Ja kuigi ma olen rohkem objektorienteeritud programmeerimise kasutamise fänn, näitan, et kaasan need mallid protseduurikoodi kasutades.
Soovi korral on selle koodi lihtne objektorienteeritud koodiks teisendada. Lisaks eeldan, et lisate selle ka kohandatud postitustüüpide jaoks.
Kui soovite need mallid lihtsalt kaasata, võite kohandatud postituse tüübi tingimuse alati välja jätta, kuid minu kogemuse põhjal on minu arvates haruldane, et need olukorrad ei kasuta kohandatud postituse tüüpe, kuid ma ei tea teie olukorda.
See tähendab, et siin on kood.
Konksude määratlemine
Esiteks peame määratlema konksud. See on suhteliselt lihtne, kuna me kasutame ülalkirjeldatud konkse.
Esiteks üks mall :
<?php
add_action('single_template', 'acmeIncludeSingleTemplate');
/**
* Includes a custom, single template as included in a plugin. If
* the template is being viewed for a custom post type then use it;
* otherwise, use the template that's provided by WordPress at runtime.
*
* @param string $originalTemplate the path to the original template
*
* @return string the path to the original template or the custom template.
*/
function acmeIncludeSingleTemplate($originalTemplate)
{
// More to come...
}
Ja siis arhiivi mall :
<?php
add_action('archive_template', 'acmeIncludeArchiveTemplate');
/**
* Includes a custom, archive template as included in a plugin. If
* the template is being viewed for a custom post type then use it;
* otherwise, use the template that's provided by WordPress at runtime.
*
* @param string $originalArchiveTemplate the path to the original template
*
* @return string the path to the original template or the custom template.
*/
function acmeIncludeArchiveTemplate($originalArchiveTemplate)
{
// More to come...
}
Ja nüüd saame rakendada iga funktsiooni koodi.
Koodi lisamine
Esiteks vaatame ühte malli :
<?php
add_action('single_template', 'acmeIncludeSingleTemplate');
/**
* Includes a custom, single template as included in a plugin. If
* the template is being viewed for a custom post type then use it;
* otherwise, use the template that's provided by WordPress at runtime.
*
* @param string $originalTemplate the path to the original template
*
* @return string the path to the original template or the custom template.
*/
function acmeIncludeSingleTemplate($originalTemplate)
{
$singleTemplate = plugin_dir_path(
dirname(
__DIR__) );
$singleTemplate .= '/templates/single-acme.php';
if ('acme-cpt' === get_post_type(get_the_ID())) {
if (file_exists($singleTemplate)) {
return $singleTemplate;
}
}
return $originalTemplate;
}
Ja nüüd arhiivi mall :
<?php
add_action('archive_template', 'acmeIncludeArchiveTemplate');
/**
* Includes a custom, archive template as included in a plugin. If
* the template is being viewed for a custom post type then use it;
* otherwise, use the template that's provided by WordPress at runtime.
*
* @param string $originalArchiveTemplate the path to the original template
*
* @return string the path to the original template or the custom template.
*/
function acmeIncludeArchiveTemplate($originalArchiveTemplate)
{
$archiveTemplate = plugin_dir_path(
dirname(
__DIR__) );
$archiveTemplate .= '/templates/archive-acme.php';
if ('acme-cpt' === get_post_type(get_the_ID())) {
if (file_exists($archiveTemplate)) {
return $archiveTemplate;
}
}
return $originalArchiveTemplate;
}
Kui olete koodile tähelepanelikult tähelepanu pööranud, teate, et seal on väga vähe erinevusi. Tegelikult saab üldise protsessi kirjeldada järgmiselt:
- määratlege konks,
- leidke mall,
- kontrollige kohandatud postituse tüüpi,
- mall on olemas, kasutage seda
- muul juhul kasutage vaikemalli
Ja see on protsess nii üksik- kui ka arhiivimallide jaoks.
Ühilduvate mallide kirjutamine
Ja lõpuks, ja see on eriti oluline, kui soovite malli võimalikult agnostiliseks muuta, proovin pistikprogrammiga seotud sisu kuvamisel kasutada võimalikult palju sisseehitatud WordPressi mallimärgendeid. See võimaldab teema arendajatel seda hõlpsasti oma teemaga sobivaks kujundada.
Ei, te ei saa mahutada kõiki teemasid, kuid selline on WordPressi teemade olemus. Eesmärk on võtta mallist andmete toomisel ja renderdamisel võimalikult palju tööd, et esiotsa arendajad saaksid seda hõlpsalt hallata.

