

Pour le nouveau thème de mon blog j’ai dût dissocier le contenu ‘texte’ du contenu ‘image’ d’un post Wordpress. Pour chacune des deux fonctions j’ai utilisé les expression régulières en PHP afin d’extraire ce que je voulais. Je ne suis pas encore pro des expressions régulière mais j’apprends..
En premier temps il s’agit de récupérer le contenu du post avec (dans la boucle):
<?
$contenu = get_the_content();
$contenu = apply_filters('the_content', $contenu);
$contenu = str_replace(']]>', ']]>', $contenu);
?>
Les fonction apply_filters et str_replace sont celles appliqué par wordpress quand on fait appel à la fonction the_content(). Elle applique les balise <p></p> et transforme les accents en code.
Je me suis inspiré de la fonction de ce forum et l’ai simplifiée car elle était gourmande en ressource serveur. Il y a deux limitation encore à cette fonction. La première est qu’elle extrait juste la prmière image du post et non CHACUNE et la deuxième est qu’elle ne respecte pas encore le lien appliquée sur l’image si il y en a un (l’image n’est plus cliquable).
<?
$output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $contenu, $matches, PREG_SET_ORDER);
$p = $matches [0] [1];
echo"<img src='{$p}' alt='get_the_title()' />";
?>
<? // Extraction du texte (On supprime les balise img) $pattern = "`<p>.*<img .* />.*</p>`"; $replacement = ''; $texte = preg_replace($pattern, $replacement, $contenu); ?>
La fonction Wordpress apply_filters ici plus haut ajoute des balises de paragraphe autour des balises images. C’est pourquoi ici j’ai fait une recherche sur une balise <p>peut etre séparé avec un <a>et suivit de <img .
J’espère que ça pourra aider certain..
N’oubliez pas de faire un tour sur www.uneimageparjour.be