Does WordPress Ping Pages, Or Just Posts?
You’ve created a massive site using WordPress—but all in pages, not posts. Should you be worried for your continued SEO happiness? In other words, does WordPress ping when you create a page, or just a post? And for that matter, do page/post edits send out a ping? Let’s dig into WordPress and find out.
Ping, Ping, Post and Page
For those not familiar with WordPress, here’s some of the relevant parts:
- A Post is timestamped content, and usually displays its date along with the category and author name. It also displays on the blog list (roll) in chronological order.
- A Page has no date, no category, and no author (although there’s an author internally), and appears on its own web page.
- A Ping is the message sent out by a post to announce itself, usually to a service like Pingomatic or Technocrati.
- A Ping is also used when you reference other blogs in your posts, either by including the URL in the article (which sends a pingback to the other blog), or by adding the URL to the Send Trackback box that appears when editing an article in WordPress Admin. These pingbacks/trackbacks can sometimes find their way into the other blog’s comments. The reverse is also true, since another blog can ping you about their article. These are the pings referenced in the WordPress Admin tab Settings; Discussion Settings.
We’re going to focus on the first type of pinging, since the second is primarily between individual blogs, and so has limited traffic-generating ability. In contrast, the first type of ping is a signal that goes out to all the ping servers you’ve set up in your ping list (the Admin tab Settings; Writing, “Update Services”).
It is quite effective for search engine notice. I once set up a blog for my wife’s writings, and did nothing else to promote it, yet within a short time it was in Google’s index—all due to pinging. This is a great way to start a blog and get notifications out there, especially if there’s regular blog posting going on.
But before we look into where pinging occurs, let’s look at pinging itself—and WHEN it occurs…
Timing Those Pings Right
It used to be that a ping happened when the article was saved, no matter the publish date. This was a problem, because if you decided to ‘load up’ a blog with thirty articles, one to appear each day, you’d actually ping places like Pingomatic thirty times that first day, and then nothing at all for the rest of the month! Obviously this isn’t what you want, and I wrote my first WordPress book and plugin to make sure pings went out when the article went live, not when the first draft was saved.
Of course that was 2006, and WordPress pinging has long been fixed. Now, WordPress checks constantly for scheduled article due dates, and publishes them at the appropriate time; it also schedules, not sends, the ping messages then. The result is the pinging for your articles will happen after the article goes live, but not always immediately after, since the scheduled ping request may not happen for a minute or more.
The reason is that all ping requests are handled by the WordPress cron job, a bit of code that does what’s called a pseudo cron. Cron refers to a program on Unix and Linux computers that runs tasks at a specific time. For example, you might run a cron job once a night to back up your database. They are simple, easy(ish) to set up, and reliable.
WordPress fakes this timing program by running a bit of code when a web page is viewed; this code sees if anything scheduled needs to be done, like moving an article from scheduled status to published, and pinging, then goes and does any tasks it finds.
On low-traffic blogs it can produce odd results, since those page views are the driving force for this pseudo cron job to work. The result is that your pings may go out much later than expected, minutes or even hours later. However, it’s a rare blog with that little traffic, and so is unlikely to be a problem.
To Ping, Or Not To Ping
Now with the groundwork laid, what’s the answer to the question: do Pages ping on publish?
The answer is no. WordPress uses very specific, and different, code to manage changes for pages and posts. For example, there is one function called when a post changes from Scheduled to Published, and another for the same change in Pages. However, the code called for posts includes logging a call to the ping services—that is, it adds a WordPress cron entry to do a ping; pages do not have this action, so they don’t get a ping.
This can be a problem for some bloggers, especially beginners. Pages can make up the bulk of a typical site since they are more web-like (after all, few web pages need an author listed, or a date). In using pages instead of posts, you lose out on pinging when adding new pages or updating old. However, while this is serious for a new site (no notification for all that content), a site already indexed depends less on pings for search engine visits, and may have less of an issue with it. So while a ping is an asset, for most sites, missing an occasional ping is not the end of the world.
And what about that new wrinkle, custom pages? Custom pages are like pages, but can be massaged to look and act very different, with customized fields and display. They seem like a great way to set up a specialized site. Unfortunately, they too are like any other page, and have no pinging. So be careful designing a custom page site if you plan on using pinging for SEO; for traffic, only posts and pings go together.
However, what if you’re stuck with a site full of pages, and need the pinging? This can happen with a legacy site where you regularly update pages. With sites like that, you’ll need help in the form of a plugin. I’ve written a very short one that simply detects a page change and sends out a ping, just like posts do. You can get it at ActiveBlogging. Just upload and activate to duplicate the ping settings for your posts.
What About Edits?
One final aspect of pinging to consider is editing: is there a new ping when editing? And if so, do I risk some sort of ban?
Digging into the WordPress code, there IS a ping signal sent on a post edit (not on page edits of course). So each and every edit causes a new ping list call out. But is that a bad thing?
Not really. First off, remember the ping signal is not sent out immediately but is passed to the WordPress pseudo cron routine for processing, which adds a delay. This routine ignores multiple ping requests, so only one will eventually get sent. Additionally, a ping request is not the post’s URL, but the blog’s URL, so that means editing multiple posts over a short period combines the pings, further reducing the number actually sent.
Finally, the real problem is people that send out pings hundreds or even thousands of times a day. No one can write (or edit) that much, and so obviously it’s a traffic-generating trick. Too many of those, and a company like Pingomatic would need to take action, or melt their servers from the traffic. So they go after the abusers; but rest assured that editing your article five times in five minutes as you catch misspellings is not in the same category as those people!
To sum up: Ping requests happen when Posts are published, and when published posts are edited. No other times, and not for pages (at least not without outside help, like a plugin). The requests are executed when WordPress gets around to them, in large part depending on your blog traffic.
This article required a great deal of code ‘spelunking’ and research to confirm everything; surprisingly, in the over five years since I solved the first ping issue, no one has actually researched when and how pings work (at least, no one I found online). I guess it’s somewhat understandable, given the spaghetti code I had to follow to tease out the details. Nonetheless, knowing how your blog “calls out” should have a big influence on how you set up WordPress blogs in the future—and help you maximize the reach of every bit of that valuable content you put onto your blogs!