Mukautettujen WordPress-kuvamääritteiden lisääminen
Mitä tulee the_content -sovelluksen käyttämiseen, se on yksinkertaista.
- Määritä suodatin, joka on koukussa the_content,
- määrittää funktio, joka hyväksyy saapuvan viestin sisällön,
- tee muutokset,
- palauttaa muokatun sisällön.
Ja useimmiten tämä on kaikki mitä tarvitaan. Mutta on aikoja, jolloin saatat haluta tehdä edistyneempiä asioita.
Haluat ehkä esimerkiksi sisällyttää sisältöä ulkoisesta mallista. Tai ehkä haluat lisätä attribuutteja kuviin, jotka löydät viestistä.
Tämä voi olla vaikeaa tehdä säännöllisellä lausekkeella (koska HTML on epäsäännöllinen kieli), mutta PHP:n DOMDocumentin avulla se ei ole huono asia.
Ajatus tämän koodin takana, jonka aion näyttää, on seuraava:
- etsi viestistä img – tunnisteita,
- käydä läpi mitä löytyy,
- lisää attribuutit,
- tallenna HTML,
- palauta tulos.
Huomaa, että saatat joutua säätämään tätä omien tarpeidesi mukaan, mutta tarvitsemasi peruskoodi on :
<?php
private function addImageAttributes($content)
{
$content = mb_convert_encoding($content, 'HTML-ENTITIES', "UTF-8");
$document = new DOMDocument();
libxml_use_internal_errors(true);
$document->loadHTML(utf8_decode($content));
$images = $document->getElementsByTagName('img');
foreach ($images as $image) {
$image->setAttribute('data-example', 'true');
}
return $document->saveHTML();
}
Niille, jotka eivät tunne DOMDocumentia ja mitä yllä olevassa koodissa tapahtuu (kuten miksi tiettyjä toimintoja kutsutaan ennen merkinnän käsittelyä), tässä on lyhyt yhteenveto:
- mb_convert_encode .Tämä ottaa saapuvan tiedon merkkikoodauksen ja muuntaa sen UTF-8:ksi (perustuu yllä olevaan koodiin, mutta se voi olla jotain muuta).
- libxml_use_internal_errors. Tämä sammuttaa kaikki virheilmoitukset ja me kaikki ohjelmoijana haemme virheet itse.
- utf8_decode. Tämä purkaa tiedot merkkijonosta UTF-8:sta ISO-8859-1:een. Syy, miksi teemme tämän, on se, että useimmilla sivuilla on merkistö, joka on määritelty jälkimmäiseksi, ja meidän on koodattava se edelliseen käsitelläksemme sitä.
Suosittelen kuitenkin lukemaan DOMDocumentista lisätietoja kaikesta, mitä yllä tapahtuu.
Siitä huolimatta, kun käytät yllä olevan kaltaista toimintoa, sinulla on kuvissa muokattu data-esimerkki- attribuutti, jonka arvo on tosi .