Eliminación y etiquetas en publicaciones de WordPress


Cada vez que estoy publicando algún contenido en la página de publicaciones de WordPress, está mostrando algunas etiquetas de párrafo como <p> y <br/>. Que está mostrando un poco de espacio extra en la salida. Entonces, ¿hay alguna solución para ello? ¿Cómo eliminar todas las etiquetas?

 44
Author: Volker E., 2011-07-08

8 answers

Esto sucede debido a wpautop de WordPress. Simplemente agregue la siguiente línea de código en las funciones de su tema.php file

remove_filter( 'the_content', 'wpautop' );

remove_filter( 'the_excerpt', 'wpautop' );

Para más información: http://codex.wordpress.org/Function_Reference/wpautop

 94
Author: Santosh Sonarikar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-11 13:25:05

No recomendaría usar la opción remove_filter ya que eliminará las etiquetas y marcas en todas partes que las llame en su plantilla.

La mejor manera es desinfectar su cadena a través de PHP

Puede usar strip_tags de la función php para eliminar marcas inútiles: echo strip_tags(get_the_excerpt()); // Get the raw text excerpt from the current post

O

echo strip_tags(category_description()); // Get the raw text cat desc from the current cat page

Esto eliminará todas las etiquetas HTML de la publicación de wordpress actual al llamarla.

También puede agregar la función trim por si acaso de: echo trim(strip_tags(get_the_excerpt())); // Get the raw text excerpt from the current post

O

echo trim(strip_tags(category_description())); // Get the raw text cat desc from the current cat page

Esto es perfecto para obtener texto sin procesar para meta="descripción" y título donde no se recomiendan las marcas HTML.

Espero que ayude

 2
Author: Damien Sellier Dubois,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-19 23:29:20

Prueba esto

$my_postid = $post->ID;
$content_post = get_post($my_postid);
$content = $content_post->post_content;
$content = apply_filters('the_content', $content);
$content = strip_tags($content, '<p><br/>');
echo $content;
 1
Author: Gowri,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-07-08 14:27:05

Eliminar el filtro wpautop no es la solución más flexible. Si usted está buscando una solución página por página, o post por post, puede utilizar este plugin:

Https://wordpress.org/plugins/dont-muck-my-markup /

Agregará una casilla de verificación en cada publicación/página para que usted elija si el comportamiento core-Wordpress se deshabilitará para esa página en particular o no.

Esto es especialmente útil cuando se desea publicar algún código HTML y el auto generado <br> y <p> estropea tu diseño cuidadosamente diseñado.

El complemento también tiene una opción global para que pueda tener este comportamiento desactivado de forma predeterminada en todas las páginas/publicaciones.

Un complemento alternativo es https://wordpress.org/plugins/preserve-code-formatting / sin embargo, solo probé el que describí.

 1
Author: bg17aw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-31 14:22:52

Utilice este código para eliminar <p></p> antes de inicializar el editor.

function tinymce_remove_root_block_tag( $init ) {
    $init['forced_root_block'] = false; 
    return $init;
}
add_filter( 'tiny_mce_before_init', 'tinymce_remove_root_block_tag' );
 0
Author: myvahid,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-11 20:09:17

Utilice esto editor editor= wp_filter_nohtml_kses ($_POST['editor1']);

 0
Author: Alpesh Navadiya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-18 12:26:12

Como la respuesta aceptada aquí no funcionó para mí en WP 4.8.1, estoy publicando una solución que funcionó para mí. Solo tuve que agregar una clase a la p y WordPress no la eliminará.

<p class="whatever">
 0
Author: Pablo Santamaria,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-04 01:45:08

A veces se elimina la función wpautop de WordPress en las funciones de su tema.php no funciona (por algunas razones).

Así que tengo otra solución cómo dejar de eliminar etiquetas <br> o saltos de línea dobles (<br><br>).

  1. Haga cambios en su archivo /wp-content/themes/your_theme_name/functions.php

Agregue 2 líneas al principio de sus funciones.

remove_filter('the_content', 'wpautop');
remove_filter('the_excerpt', 'wpautop');

Esto inicialmente desactivará la función wpautopop.

  1. Haga cambios en el archivo /wp-includes/formatting.php en la función wpautop.

    A) Cambiar function wpautop( $pee, $br = true) por function wpautop( $pee, $br = false).

    Esto desactivará adicionalmente la función wpautopop de todos los lugares.

    B) Cambiar $pee = preg_replace('|<br\s*/?>\s*<br\s*/?>|', "\n\n", $pee); por

    $pee1 = $pee;
    $pee = preg_replace('|<br\s*/?>\s*<br\s*/?>|', "\n\n", $pee);
    $pee = $pee1;
    

    Esto evitará que el sistema elimine las etiquetas dobles <br>. (Sé que el código es extraño, pero simple //$pee no ayuda aquí debido a ?> etiqueta).

    C) Cambiar $pee = preg_replace("/\n\n+/", "\n\n", $pee); a //$pee = preg_replace("/\n\n+/", "\n\n", $pee);

    Esto evitará que el sistema elimine múltiples saltos de línea.

    D) Cambiar esto:

    $pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
    

    A que:

    //$pee = preg_replace('!<p>\s*(</?' . $allblocks . '[^>]*>)!', "$1", $pee);
    

    Esto evitará que el sistema elimine los saltos de línea después de la apertura o antes de la etiqueta de elemento de bloque de cierre como <div>, <article>, etc.

    E) Cambiar esto:

    $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
    

    A eso:

    //$pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*</p>!', "$1", $pee);
    

    Bastante igual: Esto evitará que el sistema elimine los saltos de línea después de la apertura o antes de la etiqueta de elemento de bloque de cierre como <div>, <article>, etc.

    F) Cambiar esto:

    $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
    

    A eso:

    // $pee = preg_replace('!<br />(\s*</?(?:p|li|div|dl|dd|dt|th|pre|td|ul|ol)[^>]*>)!', '$1', $pee);
    

    Esto evitará la sistema de eliminar <br> al final del bloque.

    G) Cambiar esto:

    $pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
    

    A eso:

    //$pee = preg_replace('!(</?' . $allblocks . '[^>]*>)\s*<br />!', "$1", $pee);
    

    Esto evitará que el sistema elimine <br> después de una etiqueta de bloque de apertura o cierre.

Espero que ayude! Y leer los comentarios en este archivo – que le ayudará a entender lo que necesita para activar o desactivar.

 0
Author: Kir Mazur,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-26 19:30:22