Cómo eliminar publicidad del Feed
A algunos les gusta mostrar publicidad en los artículos del blog. Bien sea mediante plugin o manualmente, insertan el código de Adsense o cualquier otra publicidad directamente en el post. De esta forma, según el theme o plantilla, puede aparecer tanto en el contenido de la página principal como en cada artículo por separado.
Los programas lectores de Feed leen todo el código HTML incluído los códigos javascript. Aparentemente puede que no sean ejecutados con lo que no apreciamos diferencia alguna cuando se muestran los artículos. Pero siguen estando, lo podemos comprobar si miramos en el código fuente del Feed.
Dependiendo del lector de Feeds puede existir un filtro que no permita ciertos códigos HTML y javascript. En realidad no se trata de filtrado simplemente no aceptan ciertas etiquetas HTML y tampoco permiten javascript. La mayoría lo hacen como medida de seguridad.
Sin embargo, otros lectores Feeds no ejecutan ciertos códigos pero tampoco muestran correctamente el Feed. Por ejemplo, FeedBurner no permite insertar otra publicidad en el Feed que no sea la propia. El efecto es que se muestra un espacio vacio en el lugar que debería estar el anuncio de Adsense y esto puede no ser agradable para el usuario.
Algo parecido ocurre cuando superas el límite de 3 anuncios del mismo tipo en una página del blog, Google deja espacios en blanco en su lugar.
Esto sólo pasa cuando insertamos la publicidad en el post desde el editor. Si lo hacemos modificando los archivos php del theme no tiene ninguna repercusión. Esto es debido a que WordPress crea el Feed a partir del contenido del post y los códigos javascript utilizados para crear los anuncios de Adsense forman parte de él. Además estos códigos se guardan en la base de datos junto con el resto de información.
Puesto que el código javascript no debe existir en el Feed es preferible trabajar con los archivos php. Además de esta forma no tienes que preocuparte de escribir el código en cada artículo porque saldrá automáticamente.
Si te causa mucho trastorno modificar todos los post o no sabes cómo debes realizar los cambios en tus archivos entonces te puede interesar este código para eliminar los scripts del Feed.
WordPress posee una función para eliminar todas las etiquetas HTML y el código javascript de un texto determinado. La función wp_strip_all_tags() es la encargada de esta operación. Puesto que elimina todas las etiquetas HTML también elimina los párrafos, los enlaces, tipos de fuente, los estilos en línea, etc. Modificando un poco el código de esta función podemos hacer desaparecer el código javascript y permitir algunas etiquetas HTML que nos puedan interesar en el Feed.
Añade al archivo functions.php de tu theme lo siguiente:
add_filter('the_content','no_mostrar_script',11); function no_mostrar_script($content) { if (is_feed()) { $content=preg_replace('@<(script)[^>]*?>.*?</\\1>@si', '', $content); } return $content; }
El código lo que hace es eliminar todos los javascripts que existan cuando se cree el Feed y dejará intactas las etiquetas HTML. Esto funcionará en los casos en que se escriba el código de Adsense dentro del post, con plugin o sin plugin.
Si no quisieras mostrar algunas etiquetas HTML innecesarias en el Feed podrías decirle que sólo permita los párrafos, los enlaces y las imágenes. Para ello usamos la función strip_tags de PHP. El código sería el siguiente:
add_filter('the_content','no_mostrar_script',11); function no_mostrar_script($content) { if (is_feed()) { $content=preg_replace('@<(script)[^>]*?>.*?</\\1>@si', '', $content); $content=strip_tags($content, '<p><a><img>'); } return $content; }
De esta manera sólo las etiquetas HTML especificadas se mostrarán en el Feed eliminando el resto incluído el código javascript. Si usas cajas div para posicionar el anuncio de Adsense o cualquier otro, el código anterior también las eliminará.
7 septiembre 2010
Hola, se podría usar la función de PHP strip_tags para eliminar todo el código HTML.
Saludos
9 septiembre 2010
Cierto Aday pero strip_tags suele fallar a la hora de eliminar javascript.
Con etiquetas como <p> <a> <b> etc, va bien.
strip_tags incluso admite como argumento las etiquetas que no queremos que elimine.
Por ejemplo,
strip_tags($text, '<p><a>');
Eliminará todas las etiquetas HTML menos los párrafos (p) y los enlaces (a)
Los comentarios HTML siempre son eliminados.
Un saludo