Great for having a personal archive of content sent through Ping.fm, displaying
status updates in your sidebar, or starting a mobile photo blog. While there’s
plenty of room for customizing the plugin, sane defaults ensure that 90% of
people can get up and running quickly. Keep reading for a full list of features
Minimum System Requirements
This plugin has required PHP 5 for quite a while, but the increased
requirements below are in line with the new standard coming in WordPress 3.2.
Other version of PHP/MySQL might work just fine, but I personally use even
later versions of both for development and testing. The minimums listed below
are just that—minimums. My advice is to use the latest stable versions you
can get your hands on.
- WordPress 3.0
- PHP 5.2.0
- MySQL 5.0.15
A Quick Note About Donations
Starting with version 2.0.0 of this plugin, I added a PayPal donation link to
the information box in the upper-right corner of the page. Let me be clear: I’m
not soliciting donations, there is no charge for this plugin, and you are
not obligated to give me any money for any reason. However, people have
asked me if they could donate, and I wanted to facilitate that if you feel so
I’ve spent countless hours developing and supporting this plugin, but it’s
mostly a labor of love. I first created the plugin to meet my own needs, and
it’s kind of taken off from there. If you feel that the plugin has been useful
to you in some way, I’d be honored to take your money and spend it on gadgets
and firearm accessories.
Ye Olde Features Liste
Works with Ping.fm’s Custom URL feature to collect blog entries, micro-blog
entries, and status updates and post them to your blog.
Photos posted through Ping.fm can be downloaded to your own blog and
displayed as part of a normal post. It’s a super-easy way to set up an
awesome self-hosted mobile photo blog.
Status updates and micro-blogs can be administered through a native
WordPress management screen while blogs are, well… normal blog entries!
Every feature of this plugin is tightly integrated with WordPress to
provide a native look and feel.
A beautiful settings page with predefined smart defaults and contextual
help when you need it.
Status updates are posted to the sidebar and displayed with a widget. A
standard template tag is also provided for those of you who are
The sidebar widget is customizable with the number of status updates to
show and an optional string to prepend all updates with (e.g. you might use
your first name if all your status updates begin with a verb like mine do:
Matt is…). Sensible CSS and examples are provided for you to customize
the look and feel of your widget.
Provides an RSS feed and permalinks for your pings so that you can share
them with the rest of the world.
Blog entries and micro-blog entries can have certain metadata applied to
them automatically. You can set the author, category, tags, and post status
(published or draft) for all incoming pings.
All the cool features of Ping.fm: post to your self-hosted WordPress blog
using SMS, IM, email, desktop gadgets, mobile apps, etc.
Template Tag Usage
void wp_pingfm_status ( [ int
$limit [, string
$prefix [, bool
$permalink ]]] )
Displays status updates in an unordered list (
<ul>). All parameters are
The number of status updates to show. Default value is 10. Depending on your
needs and the location on the page, a value between 5 and 15 is usually pretty
Some text to display before every status update. Default value is nothing.
This can be useful if all of your status updates begin with a verb. For
example, you might post “going to the store” from Ping.fm. If your prefix is
“Matt is”, the final output will be “Matt is going to the store”. Neat, huh?
Whether to show timestamps as permalinks, a la Twitter. The archive page is
editable via the
If you’re using the Twenty Ten theme that ships with WordPress 3.0, you might
put the following into your
<li id="pingfm" class="widget-container"> <h3 class="widget-title">Status Updates</h3> <?php wp_pingfm_status(); ?> </li>
mixed wp_pingfm_latest ( void )
Retrieves the single most recent ping (status update) from the database.
stdClass object representing the latest ping, if it exists. Otherwise,
false. The object will contain the properties listed below. For more
information, dig through the source of the WordPress
ID post_author post_date post_date_gmt post_content post_title post_excerpt post_status comment_status ping_status post_password post_name to_ping pinged post_modified post_modified_gmt post_content_filtered post_parent guid menu_order post_type post_mime_type comment_count filter
- Can I change the number of status updates displayed?
Yes, of course you can! Go to your sidebar widgets and hit the ‘Edit’ link for
the Ping.fm widget. This is all mentioned in the installation instructions, but
I can see that you’re the impatient type that never reads anything. I bet you
didn’t read the owner’s manual for your car, either, huh?
- Why am I not seeing any updates in my sidebar?
Well… have you posted any yet? Only status updates posted to Ping.fm after
installing the plugin and after configuring the custom URL will show up on
your blog. If you’re confident you’ve done everything right, there might be
something else going on. You might have discovered a bug, or an “undocumented
feature” as we software engineers like to call them. Send me some sugar at
email@example.com and I’ll see what I can do.
- Why aren’t pings coming through to my site?
Read the question immediately preceding this one once more. Done? Now go through
the checklist below and make sure everything is kosher:
Is your site blocked off from others using HTTP Basic Authentication or some
other method? Do you have firewall rules restricting users to a certain IP
Are you using any WordPress plugins that limit outside access? I’ve seen
problems related to the Bad Behavior plugin in the past.
Can you hit the “secret posting URL” from your browser? You should get an
error message, which is a good sign that the plugin is installed and
Do you have some boxes checked over at the
Custom URL Settings page? Next to Use for:, you
need at least one of those options selected (preferably all three).
Under the main Ping.fm Service Settings, is the
box checked next to the Post messages to Custom URL option? This is
If you’re only posting status updates or micro-blogs from Ping.fm, is the
widget activated and placed somewhere?
- Can I post blog entries or pages from my Ping.fm account?
The original answer was a defiant “get off my lawn, you damn kids!” That lasted
for a whole point release. By popular demand—and thanks in no small part to
Rocco and Vinny, who were sent to convince me—the ability to post blog entries
has been available since 0.9.2. Support for creating pages might be added in a
future release. Give the people want they want, right?
- Will this plugin work with WordPress.com blogs?
Definitely not. That would be goofy, because WordPress.com blogs don’t allow
plugins. Plus, Ping.fm already has support
for WordPress.com hosted blogs anyway.
- Can you add feature X, Y, and Z? And Q? And L?
I could add all kinds of features, but the real question is whether I
should. The intent and operation of this plugin was meant to be simple, but
go ahead and pitch your feature idea to me. If it’s not too outrageous and I
think others would benefit from it, I’ll probably add it to a future version of
- Fixed edge case where “Fatal error: Call to undefined function
wp_create_category()” would be triggered if the
manually deleted from the
- Transitioned away from a separate database table holding status updates to
WordPress’s new “custom post types” that were introduced in 3.0. This had
the added bonus of providing “real” single post pages for status updates
and micro-blogs, and a native WordPress interface for managing it all.
- Added true support for images sent from Ping.fm. They’re now downloaded
locally and given first-class treatment (like any other uploaded media).
- Redesigned the entire settings page and rewrote much of the help content.
- Rewrote much of the code and split it out into separate classes for
performance and organizational reasons.
- Fixed timestamp offset bug (again). Hopefully fixed for good this time.
- Added robust upgrade functionality designed to be extended to future
releases as well as this one.
- Fixed timezone handling throughout the plugin. Be sure to set a named
timezone (the city closest to you) in General Settings, or else your
timestamps might not be correct.
- Fixed invalidly-nested
</li>element in the widget.
- Minor code beautification. Very minor.
- Further tweaking of the way rewrite rules are filtered and flushed. In some
cases, rewrite rules weren’t taking affect immediately after a brand-new
installation of the plugin, but that should be remedied with this release.
- Tweaked the rewrite rules a little more. There were some edge cases where
other things would overwrite our rules, but that should be fixed now.
- Added support for displaying images associated with pings. A corresponding
option has been added to the settings page.
- Added specific check for PHP 4 to prevent code from even being parsed if
an insufficient version of PHP is found.
- Failure for PHP 4 now handled gracefully instead of with a syntax error.
- Moved flushing of rewrite rules to only happen on plugin activation and
not on every page load. This should have a noticeable positive impact on
performance. The only downside is that the plugin will have to be
deactivated and reactivated if pretty permalinks are enabled (a worthy
trade-off in my opinion).
- Cleaned up the code in various places to make it more readable (especially
with regard to the error message pseudo-constants).
- Primarily a documentation release. Lots of stuff in the README was
clarified, fortified, beautified, and just plain shifted around.
- Fixed a small bug related to a new option that was added in 1.2.0. After
saving the options twice, the problem would have fixed itself anyway.
- Added screenshots for the benefit of the WordPress Plugin Directory.
- Moved the changelog off of my site and into the Plugin Directory to give
people a more central point of contact.
- Added option to force all status updates to become actual posts.
- Added option in widget to “permalinkify timestamps” (archive page is
- Invented new English word: permalinkify.
- Tried to make the settings page clearer and easier to understand.
- Did some code housekeeping.
- Added Ping.fm logo to settings page.
- Complete code rewrite (PHP 4 procedural to PHP 5 OO) and new way of storing
settings in the database.
- Did away with external
ping.phpfile for receiving updates.
- Added native WordPress URL hooks and internal support for
- Added RSS feed containing 20 most recent status updates.
- Added archive/permalink pages for individual pings (mostly in conjunction
with RSS feed, but can be used elsewhere as well). Page is templated for
- Provided interface for user-supplied widget styles (CSS).
- Widget HTML/CSS makes more sense. Widget container has an ID of
and a class of
wp_pingfm_status()for people using non-widgetized themes. See
Other Notes section for docs.
- CSS is now targeting
#pingfmin a less specific way (because it broke on
themes with multiple sidebars).
- Fixed random bug only seen in WebKit where a space preceding a status update
was considered significant whitespace. (Don’t ask me—I don’t build it, I
just code to it.)
- The first non-beta release!
CREATE TABLEfor installer after reports of it failing on MySQL
versions < 4.1.
- Added check for widget to determine if database table was created properly.
- Tweaked a few textual things here and there.
- This version was never released publicly and the changes made for it were
rolled into 1.0.0.
- Added this page as a home
base for the plugin on my site.
- Made the README more readable (hopefully). The documentation should be
easier to understand now.
- Fixed the
mod_rewriteexample to include the
[L]flag. The entire line
didn’t get copied from my conf file the first time around.
- Minor textual changes and a speed enhancement (eliminated a DB call using
some crafty coding).
- Added widget options to specify colors used in injected style sheet (CSS).
- Reorganized, streamlined, and beautified some code.
- Fortified README with some additional information and a
example for shortening the inevitably long URL.
- The plugin now auto-detects the directory it’s running from. Anything under
/wordpress/wp-content/plugins should work reasonably well. If the
WordPress Plugin Directory wants to create a really long folder structure,
so be it.
- Added support for all types of Ping.fm updates. Blog and micro-blog posts
now show up as actual entries in WordPress.
- The initial public release! After being hacked together with loving care
during a couple late nights, the code finally sees the light of day. Cue
angelic choir and bright background light…