✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

Kehaklassi lisamine malli alusel

16

Mallidega töötamine WordPressis on midagi, mis pole haruldane. Kõik on omamoodi mallid – alates põhilehe mallist, ühe lehe mallist ja 404 mallist – kuni kohandatud mallideni.

Mõnikord võite siiski soovida bodykasutataval mallil põhinevale elemendile klassi rakendada, et saaksite selle konkreetse malli stiili muuta kui ülejäänud saidil.

Kuigi saate seda teha mitmel erineval viisil, on meil kõigil oma meetodid, nii et mõtlesin, et jagan oma meetodeid.

Kehaklass malli alusel

Enne mallil põhineva kehaklassi lisamise koodi juurde hüppamist on oluline märkida, et ma eeldan, et malli nimi on järgmises vormingus: template-{name-of-template}.php.

Oletame, et töötate kuu aja jooksul kaotatud kaalu kohta teabe kuvamiseks malli kallal ja soovite seda teha, kasutades selleks malli. Malli võib nimetada template-weight-loss.php.

Asi on siin: klassi nime rakendamine ühele seda malli kasutavale lehele ei ole suurem asi. Aga kui teil on mitu lehte, mis kasutavad seda malli (mis on mõistlik, kui kasutate saiti, kus paljud inimesed võivad seda malli kasutada, eks?), siis peate kindlasti kasutama klassi nime igale lehele, mis on selle mallina.

Aga kuidas?

Seda saate teha mitmel viisil, kuid selleks on vaja vähemalt järgmist.

  1. Haakimine body_class konksuga, mida WordPress pakub,
  2. Malli nime lugemine,
  3. Selle rakendamine keha klassi nimele (kui leht kasutab malli)

Õnneks on seda lihtne teha, sest konks edastab hulga klasse konksuga funktsiooni ja antud postituse metaandmed sisaldavad seda, kas see kasutab malli või mitte.

Seda on võimalik saavutada järgmiselt.

<?php

add_filter('body_class', 'acme_add_body_class');
/**
 * If the current page has a template, apply it's name to the list of classes. This is
 * necessary if there are multiple pages with the same template and you want to apply the
 * name of the template to the class of the body.
 *
 * @param array $classes The current array of attributes to be applied to the 
 */
function acme_add_body_class($classes)
{
  if (!empty(get_post_meta(get_the_ID(), '_wp_page_template', true))) {
      // Remove the `template-` prefix and get the name of the template without the file extension.
      $templateName = basename(get_page_template_slug(get_the_ID()));
      $templateName = str_ireplace('template-', '', basename(get_page_template_slug(get_the_ID()), '.php'));

      $classes[] = $templateName;
  }

  return array_filter($classes);
}

Pange tähele, et selle jaoks võite kasutada pigem sulgemist kui funktsiooni nime konksuga ja sõltumatut funktsiooni, kuid kuna erinevad seda lugevad inimesed kasutavad PHP erinevaid versioone, on lihtsaim viis selle demonstreerimiseks kasutada seda ülalpool.

Miks seda teha?

Üldiselt, kui teie lehel on sama nimi, mis rakendataval mallil, siis on sellel klassi nimi, mis ühtib lehe nimega.

See tähendab, oletame, et teil on üks leht ja selle nimi on Weight Loss. Elemendil bodyon weight lossklass. Kuid kui kasutate teist, kolmandat, neljandat või nii mõndagi teistsuguse pealkirjaga lehel, pole sellel seda klassi.

Kui soovite veenduda, bodyet klassi nimi põhineb mallil, siis ülaltoodud kood tagab selle toimimise.

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem