Quando si tratta di lavorare con the_content, è semplice.
- Imposta un filtro che sia collegato a the_content,
- definire una funzione che accetti il contenuto dei post in arrivo,
- apporta le tue modifiche,
- restituire il contenuto modificato.
E la maggior parte delle volte, questo è tutto ciò che serve. Ma ci sono momenti in cui potresti voler fare cose più avanzate.
Ad esempio, potresti voler includere il contenuto da un modello esterno. O forse vorrai aggiungere attributi alle immagini che trovi nel post.
Può essere difficile farlo usando un’espressione regolare (perché HTML è un linguaggio non regolare) ma con l’aiuto di DOMDocument di PHP, non è poi così male.
L’idea alla base di quel codice che sto per mostrare è la seguente:
- cerca i tag img nel post,
- scorrere tutto ciò che viene trovato,
- aggiungi gli attributi,
- salva l’HTML,
- restituire il risultato.
Tieni presente che potrebbe essere necessario modificarlo in base alle tue esigenze, ma il codice di base di cui avrai bisogno è :
<?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();
}
Per coloro che non hanno familiarità con DOMDocument e cosa sta succedendo nel codice sopra (come nel motivo per cui alcune funzioni vengono chiamate prima di elaborare il markup), ecco una rapida carrellata:
- mb_convert_encode .Questo prenderà la codifica dei caratteri dei dati in entrata e la convertirà in UTF-8 (basato sul codice sopra, ma può essere qualcosa di diverso).
- libxml_use_internal_errors. Questo disattiverà qualsiasi segnalazione di errore e tutti noi, come programmatori, recupereremo gli errori da soli.
- utf8_decodifica. Questo decodifica le informazioni in una stringa da UTF-8 a ISO-8859-1. Il motivo per cui lo facciamo è che la maggior parte delle pagine avrà un set di caratteri definito come quest’ultimo e abbiamo bisogno che sia codificato nel primo per elaborarlo.
Detto questo, consiglio anche di leggere DOMDocument per ulteriori informazioni su tutto ciò che sta accadendo sopra.
Tuttavia, una volta utilizzata la funzione come quella sopra, avrai un attributo di esempio di dati personalizzato con un valore true sulle immagini durante il tuo post.