Eliminar etiquetas P de las imágenes

2

Estoy usando WordPress 4.2.2 y cada vez que agrego una imagen al wysiwyg, envuelve la imagen generada en una etiqueta de párrafo. Necesito quitar estas etiquetas. Todo lo que parece encontrar en línea es de 2011 y además no parece funcionar.

He intentado poner cosas en functions.php como:

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

Nada parece funcionar. Cómo puedo lograr esto.

Por cierto, estoy usando el tema de inicio wysiwyg y JointsWP de ACF Pro y mis imágenes NO ESTÁN envueltas en una etiqueta de enlace si eso marca la diferencia.

    
pregunta agon024 21.07.2015 - 01:18

1 respuesta

8

1) Filtro wpautop () con ACF:

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

Si tiene ambos, intente verificar con una prioridad posterior en add_filter. Es posible que el tema, el complemento o el acf lo anulen ...

add_filter('acf_the_content', 'filter_ptags_on_images', 9999);
add_filter('the_content', 'filter_ptags_on_images', 9999);

2) Editar wpautop ():

<?php
remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'custom_wpautop' );
function custom_wpautop() {
 // copy wpautop() code at https://core.trac.wordpress.org/browser/tags/4.2.2/src/wp-includes/formatting.php#L373 and add img to the $allblocks variable
}

3) Sin embargo, este es un montón de código para una tarea. Considera intentar esto: enlace

4) Puedes intentar esto aunque no sea tan bueno como el método que intentas lograr, ya que este se realiza con javascript.

<script type="text/javascript">
jQuery(document).ready(function($){
    $('p > img').unwrap();
});
</script>

5) si es solo el estilo lo que está arruinando las cosas y no te importa el marcado:

<style type="text/css">
p > img {
    margin: 0 !important;
}
</style>
    
respondido por el Bryan Willis 21.07.2015 - 07:44

Lea otras preguntas en las etiquetas