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
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.
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