WordPress: Publishing posts in the past

There may be situations where you want to publish a post with a date in the past. On first sight WordPress does not have such a function. If you look closer you find on the page “Add new post” in the metabox “Publish” the following entry:

If you click on Edit a field appears in which you can enter the desired publishing date:

You can not only choose a date in the future but also a date in the past. After you have entered the date you should not forget to OK because otherwise the new date isn’t used when you publish the post:

If you press Publish the post will be published with the date set above:

Update: Monika Thon-Soun advised me that this practice may not be suitable if you’re focusing on search engine ranking since the subsequent entry may confuse Google et al.

WordPress: Get IDs of *ALL* post tags

WordPress contains a function for getting the tags associated with a post (get_the_tags) but none for retrieving the IDs of all site wide available tags.

The solution to this problem is quite easy if you remember that post tags are nothing else but pre-defined taxonomies and that you can use the function get_terms to retrieve the terms of a taxonomy:

Funny enough there is a function for getting all category IDs (get_all_category_ids).

Yet another rant about bad WordPress plugin programming habits

The other day I came across a plugin that provided some useful functions to WordPress but is so badly coded that I can’t recommend it to anyone to use it. Though there are a lot of blog posts ranting about people “doing it wrong” this not be named plugin does so many things wrong in one place that I’m simply feeling the urge to write about a few of them.

My favorite Greasemonkey-Script

Greasemonkey is a fine Firefox-Addon that allows you to execute some Javascript on the page to change the content or do other stuff to enhance the experience.
My all-time favorite is Jasper’s Google Reader subscribe. What does it do?
Every blog, almost every news site, and many other web sites provide RSS feeds. They are a handy thing but some sites make it hard to find the corresponding link or don’t display it at all. The only chance to find the link would be to browse the source code of the page. Scanning the code while you’re in front of a computer? Ridiculous! Let’s use the machine and that’s what this script does.
It looks for links containing the strings “rss”, “atom”, or “rdf” and displays a small icon at the top right of your browser:

If you hover the mouse cursor over the icon all found feeds will be displayed:

As you see not only the main feed is found but also the comment feed and possible others. With this script installed you can simply click on this icon and subscribe to feeds without frantically scanning the page.

The selectbox mystery of WordPress

The other day I wanted to use a selectbox with 5 elements in my plugin’s option page. No problem I thought:

What everybody including me expects is something like this:

But I actually got this:

The mystery lies in the style sheet for the admin area:

This forces every selectbox to display only one element. I have no idea why this is implemented. There is also a ticket in the WP tracking system discussing this behaviour since two years.

The solution to this problem is quite easy:

Seems easy but costed me over 1 hour of my lifetime.

WordPress: Shorten title

A frequently asked question in WordPress forum is how to shorten the title of a post to a predefined number of characters and to append a “…”.

The problem is solved with a few lines of code:

The variable $chars has to be set to the number of characters you want to have in your title and in line 6 you have to define the text to replace the omitted part of the title (… is the typographically correct version of three points, called ellipse).

It’s a bit disadvantageous that the title could be cut in the middle of a word. If you like you can extend the function accordingly:

If you copy the function into the file functions.php of your theme all calls of the_title will return the shortened title.

Remove “by author” post section from Genesis themes

As I already wrote in How-to remove the author from your Twenty-Ten posts most blogs do not need the section “by author” since there is only one author.
By default most Genesis themes contain this section (e.g. the prose theme):

Let’s see how-to remove the author’s name from the post info.

WordPress: Remove links from the_category()

The standard way to display the categories a post belongs to is to use the function the_category, e.g, the call the_category(', '); will output:

link, photo, regular, video

As you see the categories are automatically linked to their respective category pages which in most cases is the style needed. Nevertheless there may be situations where you (or your customer) does not want the categories to link anywhere. Unfortunately WordPress does not provide any straightforward method to accomplish this so we have to make a small detour.

There are two ways we can take: rebuild the output or filter the output.

WordPress plugins: Don’t hard code path names …almost never!

The other day I found a plugin claiming the following in its instructions:

What the heck? Why shouldn’t I change the name of the folder? The author didn’t actually hard code the plugin path of the plugin, did he?

WordPress: Unified Login Error Messages

If you log-in to your WordPress blog and use an unregistered username the system will answer “ERROR: Invalid username. Lost your password?” and if you got your username right but not your password: “ERROR: The password you entered for the username admin is incorrect. Lost your password?”
So you know independently if you used a registered username or if the password isn’t right. That’s nice of WordPress, isn’t it? From the user point of view sure it is … and from the view of a possible attacker, too!