web-dev-qa-db-fra.com

Comment empêcher les images d'être enveloppées dans des balises <p>?

J'essaie d'empêcher WordPress d'envelopper automatiquement <img>s avec des balises <p>. J'ai essayé cet extrait recommandé dans mon functions.php:

function filter_ptags_on_images($content){ // Remove p tags from around images
     return preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content);

}
add_filter('the_content', 'filter_ptags_on_images');

Cela ne fonctionne pas si une image est l'élément premier d'un article ou d'une page. Lorsqu'une image précède un texte, elle est à nouveau entourée d'étiquettes <p>. Des idées?

1
Elliott Klein

c'est une fonction qui décompresse les images des balises p dans the_content

/**
 * WP: Unwrap images from <p> tag
 * @param $content
 * @return mixed
 */
function so226099_filter_p_tags_on_images( $content ) {
    $content = preg_replace('/<p>\\s*?(<a .*?><img.*?><\\/a>|<img.*?>)?\\s*<\\/p>/s', '\1', $content);

    return $content;
}
add_filter('the_content', 'so226099_filter_p_tags_on_images');
1
honk31

Si vous voulez supprimer <p> du contenu entier (pas seulement des images), cela peut vous aider

add_filter( 'the_content', 'wpse_226099_remove_p' );
function wpse_226099_remove_p( $content ) {
    global $post;
    return $post->post_content;
}

ou peut-être avec this-

remove_filter('the_content', 'wpautop')
0
mukto90