web-dev-qa-db-fra.com

Comment supprimer les balises p autour des balises img et iframe dans le champ acf wysiwyg

J'interroge un champ wysiwyg de champs personnalisés avancés. Le problème est dans la sortie wordpress enveloppe des images occasionnelles et des iframes avec des balises p, peu importe ce que j'essaie. Désactivez le wpautop fonctionne remove_filter ('acf_the_content', 'wpautop'); mais si j'essaie d'exclure uniquement les images et iframes avec le fragment de code suivant, il échoue:

function filter_ptags_on_images($content)
{
    $content = preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content);
    return preg_replace('/<p>\s*(<iframe .*>*.<\/iframe>)\s*<\/p>/iU', '\1', $content);
}
add_filter('the_content', 'filter_ptags_on_images');

Quelqu'un a-t-il une suggestion pour atteindre cet objectif? Cordialement Ralf

1
rpk

Ok, si vous voulez supprimer les balises p pour les champs img et iframe pour les champs personnalisés avancés, vous devez échanger the_content avec acf_the_content. Le code a cette apparence:

function filter_ptags_on_images($content)
{
    $content = preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content);
    return preg_replace('/<p>\s*(<iframe .*>*.<\/iframe>)\s*<\/p>/iU', '\1', $content);
}
add_filter('acf_the_content', 'filter_ptags_on_images');
1
rpk