Remova as tags P das imagens

2

Estou usando o WordPress 4.2.2 e toda vez que eu adiciono uma imagem ao wysiwyg ele envolve a imagem de saída em uma tag de parágrafo. Eu preciso remover essas tags. Tudo o que pareço encontrar on-line é de 2011, mas parece que não funciona.

Eu tentei colocar coisas no 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. Como posso fazer isso.

BTW Estou usando o tema inicial do wysiwyg e do JointsWP do ACF Pro e minhas imagens NÃO são agrupadas em uma tag de link se isso fizer diferença.

    
por agon024 21.07.2015 / 01:18

1 resposta

8

1) Filtro wpautop () com 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');

Se você tiver os dois, tente verificar com uma prioridade posterior no add_filter. É possível que o tema ou o plug-in ou a ACF estejam sobrescrevendo você ...

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

2) Edite o 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) No entanto, isto é muito código para uma tarefa. Considere tentar isso: enlace

4) Você pode tentar isso, embora não seja tão bom quanto o método que está tentando realizar, já que este é feito com javascript.

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

5) se é apenas o estilo que está atrapalhando as coisas e você não se importa com a marcação:

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

Tags