Autonomía digital y tecnológica

Código e ideas para una internet distribuida

Cómo meter el contenido de una entrada de WordPress en una variable sin perder los saltos de línea

Imago voragine.net

Uno de mis eternas batallas con WordPress, perdida hasta ahora, recientemente ganada: para almacenar información de las entradas de tu página (el título, la fecha, la URL…) en variables para usarlas más adelante, WordPress provee de unas funciones magníficas que devuelven la información sin hacer echo. El problema viene con la función de este tipo para el contenido, get_the_content, que permite almacenar el contenido de una entrada en una variable:

$post_text = get_the_content();

pero le quita los saltos de línea, destruyendo los párrafos.

Para que esto no ocurra hay que aplicarle el filtro que WordPress aplica a la función the_content pero no a get_the_content.

$post_text = get_the_content();
$post_text = apply_filters( 'the_content', $post_text );

2 comentarios

  1. Estoy intentando hacer un filtro para que los usuarios mas inexpertos pero a la vez mas curiosos, me descarguen las imágenes de mi sitio con click derecho:
    add_filter(‘the_content’, ‘ocultarIMG’);
    function ocultarIMG($contenido) {
    if (preg_match_all(‘//’, $contenido, $matches)) {
    $i = 0;
    foreach ($matches[1] as $match) {
    foreach (wp_kses_hair($match, array(‘http’)) as $attr)
    $img[$attr[‘name’]] = $attr[‘value’];
    $replace = ‘div style=»position:relative;»>’ . $matches[0][$i] . ‘</div';
    $contenido = preg_replace($matches[0][$i], $replace, $contenido);
    $i++;
    }
    return $contenido;
    } else {
    return $contenido;
    }

    todo lo pongo en el archivo functions.php, todo va de lujo si solo usara the_content(); el problema que tengo, es que uso en mi theme get_the_content() y ya no me hace el filto.

    Si me puedes ayudar, te agradezco de corazón.

    Un desarrollador empedernido.

  2. Sebastian, para que get_the_content funcione igual que the_content excepto que no se haga echo automáticamente del contenido, tienes que aplicar los filtros de the_content a get_the_content:

    $post_text = get_the_content();
    $post_text = apply_filters( ‘the_content’, $post_text );

    Si incluyes unas líneas como estas en el archivo correspondiente de tu theme, debería funcionar.

    Un saludo

Dejar un comentario

*
*

 

No hay trackbacks