vernal pool

Mittineague

WordPress widgets.php Hack

There is 1 plant in blossom on March the 13th.
Coltsfoot Tussilago farfara blossoms between Mar 15 and Apr 15

If you are looking for a way to stop RSS feeds with a character encoding different than your WordPress blog's character encoding from causing validation errors, please see rss.php Hack 1

This hack stops feeds in the WordPress sidebar feed widgets that have different character encodings from causing non-valid mark-up.

I say "hack" because this is NOT a plugin, but involves direct modification of the widgets.php file. If you try this, Please be Sure to Save a Back-up of the original file.

Important* Note* This hack requires the iconv function. From the PHP documentation:

To use functions provided by this module, the PHP binary must be built with the following configure line: --with-iconv[=DIR].

Also, if you are on a Windows or IBM server, or the results are not what you expect, Please read the documentation (actually, it's not a bad idea to read it anyway).

Open the content/plugins/widgets/widgets.php file.

In the widget_rss function find this section of code:

<?php
//php tags needed for highlighter
//.............................
 
      } else {
        $desc = str_replace(array("\n", "\r"), ' ', wp_specialchars(strip_tags(html_entity_decode($item['description'], ENT_QUOTES)), 1));
        $summary = '';
      }
 
//.............................
?>

After the line with the closing curly brace add:

<?php
//php tags needed for highlighter
//.............................
 
      $feed_char_enc = $rss->feed_encoding;
      $board_char_enc = get_bloginfo('charset');
      if($feed_char_enc != $board_char_enc)
      {
        $conv_link = iconv($feed_char_enc, "$board_char_enc//IGNORE", $link);
        $conv_desc = iconv($feed_char_enc, "$board_char_enc//IGNORE", $desc);
        $conv_title = iconv($feed_char_enc, "$board_char_enc//IGNORE", $title);
        $conv_summary = iconv($feed_char_enc, "$board_char_enc//IGNORE", $summary);
        $link = ($conv_link != FALSE) ? $conv_link : $link;
        $desc = ($conv_desc != FALSE) ? $conv_desc : $desc;
        $title = ($conv_title != FALSE) ? $conv_title : $title;
        $summary = ($conv_summary != FALSE) ? $conv_summary : $summary;
      }
 
//.............................
?>

Which will now be before this line:

<?php
//php tags needed for highlighter
//.............................
 
      echo "<li><a class='rsswidget' href='$link' title='$desc'>$title</a>$summary</li>";
 
//.............................
?>

Notice that for the "out charset" I appended the "//IGNORE" string. This removes any characters that can't be converted. This is not entirely desirable, but using the default will result in the converted strings being terminated at the last valid character. A third option is to append the string "//TRANSLIT" instead. You may want to try it, but I found that the converted strings still caused non-valid mark-up.

About - Blog - Sitemap - Contact - Forums - Home 

Wireless devices:
The Wildflower list can be searched from the list serve data available at www.mittineague.com/wildflowers.wml


PHP icon. PEAR icon. MySQL icon. phpBB icon. Sitepoint icon. Valid XHTML 1.0 icon. Valid CSS! icon. Level A conformance icon, W3C-WAI Web Content Accessibility Guidelines 1.0