Kui hakkasin WordPressis mallide loomisele esimest korda mõtlema, mõtlesin kahele aspektile:
- spetsiaalselt liikmetele mõeldud sisu ,
- sisu, mis võib laguneda üheks postituseks.
Kuid mida rohkem ma sellele mõtlesin, seda rohkem mõistsin, et seda saab (ja väidetavalt tuleks) mõne postituse jooksul selgitada.
Nii et ma annan lahti WordPressi mallide praeguse oleku ja seejärel praktilised viisid, kuidas saame korraldada näiteks oma pistikprogrammid nii, et kasutaksime tavalist PHP-d.
Pärast seda vaatan tulevases seerias, mida tähendab teiste mallimootorite kasutamine (nii PHP kui ka JavaScripti meie töös).
Alustuseks tahan aga vaadata, kuidas näeme sageli nii WordPressi teemade kui ka pistikprogrammide kontekstis kirjutatud malle.
WordPressi mallid algajatele
Olenevalt teie kogemusest WordPressi ja teiste PHP-põhiste süsteemidega, erineb teie malli määratlus kellegi teise omast.
Nii et proovimaks luua ühtset määratlust, mida ma selle postituste seeria jooksul kasutan, kasutatakse WordPressi koodeksist:
Mallid on failid, mis määravad, kuidas teie WordPressi saiti veebis kuvatakse.
Leht räägib sellest, kuidas see töötab koos andmebaasi ja muude varadega, ning kui te pole sellega tuttav, soovitan selle kohta lugeda.
Ülaltoodud definitsioon sobib aga hästi selle jaoks, kuidas kavatsen sellele mõeldes edasi liikuda.
1 Kuidas see on (praegu)
Kui rääkida WordPressi mallidest, siis arvan, et aitab kaaluda ühte malli, mille kood näeb välja umbes selline:
<div id="content-container">
<p>
Oh! The garbage chute was a really wonderful idea. What an incredible smell you've discovered! Let's get out of here!
Get away from there... No! wait! Will you forget it? I already tried it. It's magnetically sealed! Put that
thing away! You're going to get us all killed.
</p>
<h2>List of Post Titles For Acme Post Type</h2>
<?php
$args = array(
'post_status' => 'publish',
'post_type' => 'acme',
'posts_per_page' => '10'
);
$custom_query = new WP_Query( $args );
if ($custom_query->have_posts()) {
echo '<ul>';
while ($custom_query->have_posts()) {
$custom_query->the_post();
echo '<li>'. get_the_title(). '</li>';
}
echo '</ul>';
wp_reset_postdata();
}
?>
<p>
Absolutely, Your Worship. Look, I had everything under control until you led us down here. You know, it's not
going to take them long to figure out what happened to us. It could be worst... It's worst.
There's something alive in here! That's your imagination. Something just moves past my leg!
Look! Did you see that? What? Help!
</p>
</div><!-- #content-container -->
Ülaltoodud koodi mõte on see, et näete, et see segab PHP ja HTML-i.
Lisaks on oluline märkida, et kõik need failid on kujundatud CSS-i abil ja nende käitumist võib reguleerida JavaScripti kaudu. Sel eesmärgil võite seda mõtestada järgmiselt:
See kujutab endast üht malli, mis ühendab nii HTML-i kui ka PHP üheks malliks. Seejärel kujundatakse see mall CSS-iga ja seda juhitakse JavaScriptiga.
Kõik need toimivad koos, et pakkuda seda, mida kasutaja näeb.
2 Kas arendajaorganisatsioon loob jõudlust?
Kuid viis, kuidas see toimib, on omamoodi segane ja kuigi see võib kasutajale hea välja näha, tekitab see mõningaid küsimusi:
- Kas see on nii tulemuslik kui võiks olla?
- Kui lihtne on seda arendajal hooldada?
- Mis on ehitusprotsess?
- kuidas vara hoitakse ja korraldatakse?
Muidugi, suurem osa sellest, mida ülal loed, on väga arendajakeskne, kuid leian, et kui kood on korraldatud nii, et arendajatel on sellega lihtne töötada, võib see sageli olla kasutaja jaoks veelgi kiirem.
Mida see aga tähendab?
- Kas tutvustame Sassi?
- Kas me vähendame JavaScripti?
- Kuidas me neid varasid kombineerime ja impordime?
- Kuidas on lood kohandatud PHP-päringutega, mis toimuvad iga malli kontekstis?
Ja kuigi esimesed asjad on olulised ja seda väärt (ja ma võin pärast seda seda mitmes sarjas käsitleda), võib loogika eraldamine malli seest isegi ilma mallimootorita muuta koodi arendajakesksemaks.
Kas see muudab kasutaja jaoks asjad kiiremaks? Mitte tingimata. Kuid see aitab meil teha esimest sammu just selle nimel.
Korraldame end ümber
Selle seeria järgmises postituses võtan näite kaudu lahti sisu, mida oleme harjunud WordPressi mallides nägema, ja hakkan seda ümber korraldama, et see oleks paremini organiseeritud nii, et tehnikaid saaks erinevates projektides kasutada.
See tähendab asjade liigutamist nende funktsioonidesse (või isegi klassidesse ja seega ka funktsioonidesse) ja seda, kuidas me saame neid oma mallide kontekstis kutsuda.
Lõppkokkuvõttes toob see kaasa hõlpsamini loetava koodi, probleemide parema eraldamise ja suunab meid andmete mallisse sisestamise muutmise viiside poole.