FeedWordPress 0.95 is loosed upon the world

Update 2007-11-21: FeedWordPress 0.95 is now out of date. You can download the latest release — 0.991 at the time of this writing — from the project homepage.

0.95 is now available for download.[1]

[2]: http://projects.radgeek.com/download/feedwordpress-0.95.tar.gz

0.95 squashes a bug that I discovered, to my irritation, in the field at Blogs[3], and adds some significant features that may be of interest. Author aliases are now supported, and you can now decide whether or not FeedWordPress will create new authors or new categories when it encounters author names or category names that are not yet in the WordPress database. These features can even be used to provide some simple filtering functionality without having to write a PHP filter. For more information, see the change log and the documentation(http://projects.radgeek.com/feedwordpress).

Blogs: http://www.feministblogs.org/

We are slowly moving towards 1.0 (which, incidentally, I don’t intend to call 1.0 — because, roughly, once it reaches that point it will be mature software and will be unlikely to make any milestone changes of the sort that would make a major version number make sense; the version will most likely be named after the date that it was released).

Here’s a rough outline of what there is left for me to do between now and the 1.0 release:

1. Bug fixes (investigating bugs that users are reporting to me now, and squashing any new ones that come up)

2. Adding some more global options (e.g., allowing users to globally set the default post status, comment status, and ping status for syndicated posts)

3. Support for RSS enclosures.

4. Adding a proper interface for editing FeedWordPress-specific settings for Contributor links; this special editing interface would be reached through the “Edit” link under Links –> Syndicated.

Is there anything important that I’m missing? Let me know what you think.

#### Change Log: from 0.91 to 0.95 ####

* BUG FIX: Fixed an obscure bug in the handling of categories: categories
with trailing whitespace could cause categories with duplicate names to
be created. This no longer happens. While I was at it I tightened up the
operation of FeedWordPress::lookup_categories() a bit in general.

* FEATURE DEPRECATED: the feed setting `hardcode categories` is now
deprecated in favor of `unknown categories` (see below), which allows
you to strip off any syndication categories not already in your database
using `unknown categories: default` or `unknown categories: filter`. If
you have `hardcode categories: yes` set on a feed, this will be treated
as `unknown categories: default` (i.e., no new categories will be added,
but if a post doesn’t match any of the categories it will be added in
the default category–usually “Uncategorized” or “General”).

* FEATURE: You can now set global defaults as to whether or not
FeedWordPress will update the Link Name and Link Description settings
for feeds automatically from the feed title and feed tagline. (By
default, it does, as it has in past versions.) Whether this behavior is
turned on or off, you can still override the default behavior using
feed settings of `hardcode name: yes`, `hardcode name: no`,
`hardcode description: yes`, or `hardcode description: no`.

* FEATURE: Users can now provide one or several “aliases” for an author,
just as they can for a category. For example, to make FeedWordPress
treat posts by “Joseph Cardinal Ratzinger” and “Pope Benedict XVI” as
by the same author, edit the user profile for Pope Benedict XVI and add
a line like this to the “User profile” field:

a.k.a.: Joseph Cardinal Ratzinger

You can add several aliases, each on a line by itself. You can also add
any other text you like to the Profile without interfering with the

* FEATURE: Users can now choose how to handle syndicated posts that are
in unfamiliar categories or by unfamiliar authors (i.e., categories or
authors whose names are not yet in the WordPress database). By default,
FeedWordPress will (as before) create a new category (or new author) and
use it for the current post and any future posts. This behavior can be
changed, either for all feeds or for one or another particular feed.

There are now three different options for an unfamiliar author: (1)
FeedWordPress can create a new author account and attribute the
syndicated post to the new account; (2) FeedWordPress can attribute the
post to an author if the author’s name is familiar, and to a default
author (currently, this means the Site Administrator account) if it is
not; (3) FeedWordPress can drop posts by unfamiliar authors and
syndicate only posts by authors who are already in the database.

There are, similarly, two different options for an unfamiliar category:
(1) FeedWordPress can create new categories and place the syndicated
post in them; (2) FeedWordPress can drop the unfamiliar categories and
place syndicated posts only in categories that it is already familiar
with. In addition, FeedWordPress 0.95 lets you choose whether posts that
are in *no* familiar categories should be syndicated (and placed in the
default category for the blog) or simply dropped.

You can set the default behavior for both authors and categories using
the settings in Options –> Syndication. You can also set different
behavior for specific feeds by adding the `unfamiliar author` and / or
`unfamiliar categories` settings to the Link Notes section of a feed:

unfamiliar author: (create|default|filter)
unfamiliar categories: (create|default|filter)

A setting of `unfamiliar author: create` will make FeedWordPress create
new authors to match unfamiliar author names *for this feed alone*. A
setting of `unfamiliar author: default` will make it assign posts from
unfamiliar authors to the default user account. A setting of
`unfamiliar author: filter` will cause all posts (from this feed alone)
to be dropped unless they are by an author already listed in the
database. Similiarly, `unfamiliar categories: create` will make
FeedWordPress create new categories to match unfamiliar category names
*for this feed alone*; `unfamiliar categories: default` will cause it
to drop any unfamiliar category names; and
`unfamiliar categories: filter` will cause it to *both* drop any
unfamiliar category names *and* to only syndicate posts that are placed
in one or more familiar categories.

These two new features allow users to do some coarse-grained filtering
without having to write a PHP filter. Specifically, they offer an easy
way for you to filter feeds by category or by author. Suppose, for
example, that you only wanted to syndicate posts that your contributors
place in the “Llamas” category. You could do so by setting up your
installation of WordPress so that the only category in the database is
“Llamas,” and then use Options –> Syndication to set “Unfamiliar
categories” to “don’t create new categories and don’t syndicate posts
unless they match at least one familiar category”. Now, when you update,
only posts in the “Llamas” category will be syndicated by FeedWordPress.

Similarly, if you wanted to filter one particular feed so that only
posts by (for example) the author “Earl J. Llama” were syndicated to
your site, you could do so by creating a user account for Earl J. Llama,
then adding the following line to the settings for the feed in Link

unfamiliar author: filter

This will cause any posts from this feed that are not authored by Earl
J. Llama to be discarded, and only the posts by Earl J. Llama will be
syndicated. (If the setting is used on one specific feed, it will not
affect how posts from other feeds are syndicated.)

FeedWordPress 0.91

Update 2007-11-21: FeedWordPress 0.91 is now out of date. You can download the latest release — 0.991 at the time of this writing — from the project homepage.

0.91[1] is now available for download.

0.91 is a release that squashes a few bugs and adds a few useful features. Really, it adds enough useful features that it’s worth an increment of 0.1 rather than 0.01, but it’s not where I want FeedWordPress to be for version 1.0 yet, and it certainly hasn’t regressed to 0.10, so we’ll just call it 0.91 and grit our teeth at the vagaries of the decimal system for the time being.

[2]: http://projects.radgeek.com/download/feedwordpress-0.91.tar.gz

it a whirl[3], and don’t hesitate to me(http://www.radgeek.com/contact) with any questions, comments, applause, brickbats, etc. I’ll be updating the documentation shortly to reflect the changes since 0.9. In the meantime, here’s the highlight reel:

### Features Added ###

1. **Category aliases:** many times, when you have an aggregation website with many contributors, you will end up with several post categories that mean more or less the same thing but have slightly names (for example, Blogs(http://www.feministblogs.org/) ended up with “Feminism,” “Feminism, sexism, etc.”, “feministy stuff,” “Gender Issues”, “Women’s Issues”, and so on). You can now designate “aliases” for a category so that posts with their category set to *either* the actual name of the category *or* to any of its aliases will be placed in that category. To add an “alias” for a category, (1) log in to the WordPress Dashboard and (2) go to Manage –> Categories, (3) click the “Edit” link for the category that you want to add the alias for, and (4) add a line like the following, on a line by itself, to the “Description” field:

a.k.a.: Other category name

(Of course, you should substitute the actual alias for “Other category name”.)

2. **Hard-coded titles and taglines:** By default, FeedWordPress automatically updates the Link Name and Link Description fields on a syndicated feed using the title and the tagline or description contained in the newsfeed. (So, for example, if a contributor changes the title of her blog, the new title will automatically be reflected in your “Contributors” section the next time that FeedWordPress updates its content.) If you want to *stop* FeedWordPress from automatically updating these fields for a particular feed (for example, because you want to use an abbreviated title or tagline for reasons of space), you can now do so by (1) going to Links –> Syndicated, (2) clicking the “Edit” link for the feed that you want to change the title or tagline for, (3) entering your hard-coded title and/or tagline in the Link Name and/or Link Description field, then (4) adding a line like this to the Link Notes section:

hardcode name: yes

Or a line like this:

hardcode description: yes

`hardcode name` will ensure that FeedWordPress uses your hand-entered Link Name; `hardcode description` will ensure that FeedWordPress uses your hand-entered Link Description; adding both lines will ensure that FeedWordPress uses both your hand-entered Link Name *and* your hand-entered Link Description.

3. **Ignoring syndicated categories:** By default, FeedWordPress places syndicated posts in the same categories that the newsfeed they were syndicated from places them in (so, for example, if one of your contributors placed a post in the “News” category on her blog, FeedWordPress would place the syndicated post in the “News” category on your blog; if the “News” category did not yet exist, FeedWordPress would create it automatically). If you want FeedWordPress to place posts from a particular feed in *only* the categories you manually set, and ignore the categories on the syndication feed, you can now do so by (1) going to Links –> Syndicated, (2) clicking the “Edit” link for the feed that you want to change, then (3) adding a line like this to the Link Notes section:

hardcode categories: yes

### Bug fixes ###

1. If you got an error message like this when you tried to add a new feed for syndication:

Fatal error: Call to undefined function: curl_init() in /…/feedwordpress.php on line 1353

… you can fix the problem by upgrading to 0.91[4]. FeedWordPress no longer depends on the PHP extension(http://us2.php.net/manual/en/ref.curl.php). It now uses the Snoopy module, which comes packaged with all WordPress 1.5 installations, to fetch data from any URI that it needs to fetch data from.

2. Manual editing of feed settings using the Link Notes section could introduce a couple of bugs under some web browsers–for example, by tacking a strange character (a carriage return, or `”\r”`, specifically). This has been fixed: carriage returns (and, indeed, any trailing whitespace) will no longer screw up your settings.

Thanks to Ray Lischner for pointing this bug out.

3. If you used FeedWordPress to syndicate posts on a blog that you also posted to directly through the WordPress Dashboard, you may have noticed that FeedWordPress 0.9 disabled WordPress’s automatic formatting filter. (So if FeedWordPress was activated, any posts that you made directly into WordPress wouldn’t have `

` tags wrapped around paragraphs unless you hand-coded them in.) This was not so much a bug as a regrettable side-effect of the way I initially handled the problem of keeping WordPress’s filters from mangling the HTML on syndicated posts. In any case, it is now fixed: FeedWordPress stops the normal formatting filters from working *only* on syndicated posts (which are already in HTML), and *not* on any posts or pages that you posted directly to your site.

Thanks to Alun for reminding me to fix this.

4. If a newsfeed provides an excerpt or summary for a particular post, 0.91[5] now uses it as the excerpt for the post on your aggregator site. (In FeedWordPress 0.8 and 0.9, the excerpt was discarded.) If no excerpt is provided, FeedWordPress will generate one from the post content.

### Issues not yet fixed ###

This is a fallen world, and unfortunately there are a few bugs on the docket that have not yet been squashed:

1. **Blank page with no options under Options –> Syndication:** This is a bug with WordPress 1.5, not with FeedWordPress. It results from a bug in WordPress 1.5’s Dashboard that makes it possible for the custom Options pages that plugins define to collide with one another. You may be able to solve the problem by deactivating all plugins except for FeedWordPress. (You can then re-activate plugins, one at a time, to see which one causes the collision.) Alternatively, you an updated version of `wp-admin/menu-header.php`(http://trac.wordpress.org/file/trunk/wp-admin/menu-header.php) and upload it to the `wp-admin` directory of your WordPress installation. This bug will by fixed in WordPress 1.5.1.

2. **Some feeds with alternative character sets get mangled:** FeedWordPress mostly handles alternative character sets fairly well, but its ability to do so depends on support from (1) MagpieRSS, (2) PHP, and (3) in PHP 4.x, the iconv library. This can make the whole affair pretty complicated, and at least one user has reported trouble (with incorrect conversion of Cyrillic characters encoded in windows-1251). This has not yet been fixed, because the multiple layers of software involved make it a non-trivial problem to solve. In the meantime, if you have been getting incorrect conversions of the character set on one of your feeds, you can work around the problem by restoring the version of `wp-includes/rss-functions.php` which comes with WordPress 1.5, instead of using the optional upgrade included with FeedWordPress.