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.

FeedWordPress 0.95 is now available for download.

0.95 squashes a bug that I discovered, to my irritation, in the field at Feminist Blogs, 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 online documentation.

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

  • 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
    Notes:

    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.

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

Give it a whirl, and don’t hesitate to contact me 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, Feminist Blogs 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 FeedWordPress 0.91. FeedWordPress no longer depends on the cURL PHP extension. 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 <p>...</p> 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, FeedWordPress 0.91 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 download an updated version of 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.