Dougal Campbell's geek ramblings

WordPress, web development, and world domination.

Running on WordPress 3.0-beta

I’ve been running this site on WordPress 3.0 for several days now (it was still alpha when I switched, and it hit beta-1 status on Friday night). Despite all the cool new stuff available in the new version, you probably won’t see much different when you upgrade. The most obvious changes that you might see in the admin area are that  “Updates” moved from under “Tools” to under the “Dashboard” menu, there’s a new “Menus” item under the “Appearance” menu,  and you might see upgrade notices for themes now, depending on the themes you have installed. Additionally, there’s a new default theme.

So, you’re probably thinking, “Is that it? I thought this was supposed to be a big upgrade!” Oh, it is. You just need to dig into a few things before you start seeing the new knobs and switches.

TwentyTen Theme

First of all, the main thing that a lot of people might want to look at is the new official default theme, TwentyTen. The new theme is pretty awesome in and of itself, and shows off some of the new theme API functions available to developers. For example, TwentyTen comes with several selectable header images, and an interface for uploading your own images for the header and background. But these features aren’t specific to TwentyTen, any theme can easily add the same features with some relatively simple additions to its functions.php file. Also, if you add a post thumbnail which is as big as (or bigger than) your defined header size, the image will be used as a custom header specific to that post or page.

Oh, and speaking of post thumbnails… It isn’t called a “post thumbnail” anymore. It’s now called a “Featured Image”. This might cause some confusion initially, but I think the new name is probably better. It reflects the creative use possibilities beyond just thumbnails, as demonstrated by their use as headers in TwentyTen.

Editor Styles

Another new addition is support for an editor-style.css file in themes. This is a subset of your post styles which the TinyMCE WYSIWYG editor can use so that what you see in the editor is even closer to what will actually be seen when you publish your posts. This feature has been called WYSIWYRG (What You See Is What You Really Get), and was inspired by Andrew Ozz’s post on the subject. TwentyTen uses this feature, but any theme can take advantage of it by including an editor-style.css file.


In the past, sites that wanted their site navigation menus done a certain way had few options. You could use a list of your pages, which was common, but if you had certain pages that you didn’t want to appear in the menu, you had to jump through some hoops. Some sites would build their menus around categories. But you had the same problem that if you wanted to exclude certain categories, you had to jump through hoops. You could use the Links Manager, but it didn’t tie in to your pages or categories, so you had to manually modify things when you needed to change your menus, and the interface was a little cumbersome for building large menu structures. And if you needed to change the order of a couple of items? Ugh.

Now there is a new Menus manager which is a bit easier to use. When you first enter the Menu manager, it will prompt you to name and create a new menu. Once your menu “container” is created, you can add items to it. For example, you could add an existing page from your site, a category archive link, or even a link to an external site. You can also drag and drop the items in a menu to list them in a specific order, and drop items into other items to create sub-menus. Once you’ve saved your menus, you’ll find that you can use them with the new ‘Nav Menu’ widget.

It is also possible to select posts, tags, and items from your media library as menu items (look under “Screen Options” in the “Menus” screen). I could imagine plugins tying into this system to make it easy to add items from external services such as Delicious, Flickr, or various other services. I think it would also be interesting if you could add other menus.

Keep in mind that the first menu you create will be the default menu for any template calls that don’t ask for a specific menu. Such is the case with the TwentyTen top navigation, which appears just under the header image (it will default to page-based navigation if you have not created any menus). So it might pay to plan in advance when creating your first menu. Hopefully there will be a way to override this and specify the default menu at some point. And you can infer (correctly) from the previous information that it is possible to create multiple menus. In combination with the Nav Menu widgets, this will give a lot of out-of-the-box flexibility to site builders.

Note that the Menu manager user interface is still in flux, and we can expect some significant changes to happen by the time beta2 is announced.

Custom Post Types

Okay, this is one of those really geeky things that people will either be really psyched about, or won’t care about. It all depends on what kind of sites you build. This feature is mainly for power-users and developers who want to build complex sites. By default, you will not see anything about custom post types in the administrative interface. This is something that has to be “turned on” by a theme or plugin. And you know what? Custom post types aren’t really new. They were already in WordPress 2.9. What is new is that when they are present, WordPress will automatically add menu items for them in the admin interface.

I’m still trying to wrap my head around the all the ways that one could use custom post types (and custom taxonomies). It’s a whole new layer of content categorization. I can see building an e-commerce site around them to organize products based on manufacturer, brand, features, type, etc. A nice feature of custom post types is that you can customize which pieces of the editor appear for them. Don’t need excerpts? Turn them off. Don’t need post thumbnails (I mean “featured images”) or custom fields? Turn them off. Want to just use the excerpt field, and eliminate the WYSIWYG editor? You can do that. One thing to keep in mind is that they are more like custom page types — custom post types will not appear in your normal post “flow”. They behave a little more like stand-alone pages. If you had the idea that you could use custom post types for creating something like Tumblr, where you have specific post formatting depending on whether you’re posting a link, a photo, or an article (which I’ve seen referred to as “post flavors“), you might have to wait a bit longer. Or figure out how to do it yourself.

There’s also been some activity around “custom URL endpoint masks”. I didn’t quite grok the full implications of the patches I saw, but it sure sounds darned exciting. I gather that this will give developers more control over how URLs are built, including the ability to create custom URL structures based on post type. I’d love to see a good write-up on this from somebody who is more familiar with the WP_Rewrite functions.


A lot of the effort around WordPress 3.0 has been the “merge” of the WordPress-MU features, now known as “multisite”. If you upgrade your existing (non-MU) WordPress site or install it from scratch, you won’t see anything about multisite in your admin interface. You first have to add a magic directive into your wp-config.php file:

define( 'WP_ALLOW_MULTISITE', true );

Once that is placed in the config, you should see a new Network menu item in the admin, and you will be able to turn on and use these new features.

If you are upgrading an existing WordPress-MU site, this shouldn’t be necessary — it will detect that you run WPMU and automatically enable the Network features.

I haven’t used WPMU in a while, so I haven’t really looked at the new Multisite stuff in any detail yet. I’m sure that there will be plenty of other articles around with details for those who are interested, though.

Bulk Plugin and Theme Upgrades

Previously, we have been able to upgrade plugins and themes one at a time. And there was a way to upgrade plugins in bulk, though it was hidden under the Tools->Upgrade menu instead of on the Plugins page. That option has now been moved under Dashboard, where it’s easier to find. And you can also now bulk-upgrade plugins right from the main Plugins listing.

This is a welcome enhancement for those of us who have a lot of plugins installed. Without bulk upgrades, it can be a bit cumbersome to upgrade plugins one at a time when four or five of them need updating at the same time.

Shortlinks API

If you use Twitter or similar services, then you are probably familiar with what shortlinks are. If you somehow still don’t know what I’m talking about, these are services which will create shorter versions of URLs. Have you ever sent a URL somebody in an email, but it was so long that it wrapped around, and the email program broke the link? Or tried to send a tweet, but a long URL took up most of your 140 characters? That’s where these services can come in handy. There are various URL shortening services such as tinyurl,,, and even the

There are no services defined by default. This feature requires a plugin or theme to add the extra pieces to actually make it functional. It is present to provide a consistent, easy interface for developers to tie into.


Of course, this isn’t everything that’s new. There are certainly other features that I didn’t notice, and the usual slew of under-the-hood improvements to existing features. And also the bundled jQuery and jQuery UI libraries have been updated to current versions.

Have you looked at WordPress 3.0 yet? What’s your favorite new feature or improvement?

About Dougal Campbell

Dougal is a web developer, and a "Developer Emeritus" for the WordPress platform. When he's not coding PHP, Perl, CSS, JavaScript, or whatnot, he spends time with his wife, three children, a dog, and a cat in their Atlanta area home.
This entry was posted in WordPress and tagged , , , , , , , , , , , , , , , , , . Bookmark the permalink.

51 Responses to Running on WordPress 3.0-beta

  1. Pingback: Tweets that mention Running on WordPress 3.0-beta --

  2. Pingback: Tweets that mention Running on WordPress 3.0-beta --

  3. Hikari says:

    A lot of features that come hidden and must be enabled by code huh?

    I’ve done some tests with MultiSite and my feeling is that it’s usable, but it still has some characteristics that limit its use. In exemple, sites URLs are too restrictive, we are limited to main domain, and upon enabing we must choose if sites will be placed in subdomains or subfolders. We can’t use a variety of domains with only core.

    Sites interaction also seems to be limited. Plugins seem to be restricted to each site, WordPress API automatically refers to the site being queried, and we don’t have information about other sites. And if we use the wrong way, as a constant instead of a function, we end up not knowing what’s current site / differ it from other ones, and mess everything.

    There seems to be no easy way to access all sites data and files at once and know which of them is current, and transfer/trade data among them. Also, we can’t have different sites tables in different databases, so with a few dozens of sites, database becomes so big it gets hard to backup and restore.

    MultiSite seems to be only a shortcut to have many/a few sites in a single install and database, making it easier to update core, plugins and themes and save space.

    • Dougal says:

      To install a plugin “site-wide”, create a wp-content/mu-plugins directory, and drop the plugins in there. Note that plugins in the mu-plugins directory are “always-on”. Once you put the code in there, it is automatically considered active, for every site in your network, and it will not show up in the normal Plugins list.

      Most of your other concerns can be addressed by plugins. Try researching some of the available WPMU plugins.

      The database schema, though inconvenient for some operations as you have noted, is designed to make scaling easier. Keep in mind that this is the same codebase that runs on, supporting millions of blogs.

      • RonBme says:

        Doug, I may have a newer build than you, but the plugins from my main site show up on all the network sites. They are turned off by default. There is the option to “Activate” “Network Activate” “Edit” and “Delete”. I was using my Super Admin access on this site. I don’t know if that makes a difference.

        Anyway, it looks like the option is there to activate the plugins on a selective basis or “site-wide” basis.


  4. Branden says:

    Hey Doug,

    excellent write up. I had one question on your blog. What wordpress retweet plugin are you using? Trying to find something similar that does not have to go through TweetMeme for the sake of cutting out the middle man for faster page loads.



  5. Pingback: uberVU - social comments

  6. Suyono says:

    I really hope if wordpress 3.0 is much more support for java flatfom

  7. Pingback: links for 2010-04-06 | Links | WereWP

  8. Otto says:

    I’ve been running 3.0b1 for a day or two now, and the multi-site works, but I think it’s a bit confusing and difficult. Hopefully we’ll see some improvements on this later down the line, especially now that it’s more mainline.

    The ShortLinks API is great. I see lots of potential here.

    • Otto says:

      BTW, the “” shortener is implemented in the Stats plugin. So there’s that. Just call “the_shortlink()” or “get_the_shortlink()” to use the new API.

      • Dougal says:

        Thanks for pointing that out, Otto. I thought I recalled something about the shortner being implemented somewhere. But while writing this article, I searched through the core code and didn’t find it mentioned.

        Lot of people already run the Stats plugin, so they might find that handy.

    • so otto, u actually got it installed rather quickly with no day or two of searching how to make all the necessary edits to the php, and…did you have to make a wildcard for your dns? my impression of 3.0 was that it would be as easy to install as 2.9.2 (+prior) as well as eliminate the incredible amount of limitations with java and iframes because of the security. just an outloud though, my logic tells me that it might have been easier and more user friendly if there were no security issues and if security was to become an issue it be worked out from there. i’m afraid of finding out that all the time i spent learning to set up MU is only going to be a waste because java and iframes are a functional, and normal everyday part of people’s websites. but i digress…. you got it going right away it sounds like. still need to do a wildcard? htaccess? i had to reinstall the first time i did an install of mu because i lost my site admin. that happened because i changed the user admin to something else which in turn interpreted that i was not the superuser. however, when creating the config, right there is a cool new box that allows you to create a custom user. so, after successfully installing with no site admin or network option, i’ve yet to do the re-installation under the simple username of admin. –really tho? not like i can really complain considering what they’ve done for me, you, and everybody else here.

      long story short–are you having the same security issues as you would with MU?

  9. Pingback: Get Ready for WordPress 3.0 | BloggingPro

  10. Otto says:

    I’ve decided that I hate the new menu system.

    • RonBme says:

      Otto, what don’t you like about the menu system? They’ve made some changes but I find it easy to work with.

      I would have rather had something like on Web MD, but this is looking good, so far. I would like to see it work better with my custom content post types, but I think I can write something to get around that.

      • Otto says:

        I discussed this on wp-hackers, but in short: My main problem is that it is very limited in scope. A menu item is a name and a URL and there’s no way in the current code to make it anything else. You can’t make an easy plugin to make a new “type” of menu item, that configuration page on each one is hard coded, etc.

        Maybe this will be resolved before release with hooks or filters or something, but the underlying design of sticking menu items in the DB as custom post types has already broken 4 plugins I use. I had to modify them to fix this issue.

        On the whole, I just feel that it’s just not up to par with the rest of WordPress. I feel like it was added in far too hastily and that it should be pulled back out until 3.1.

        • I agree. While idea is good to have menu designer, realization is not (so far). Original WooMenu was functional but not up to WP standards, and now that it’s rewritten, it causes too much problems. I hope that they will sort it out before release, and that there will be some easy way to expand it.

        • RonBme says:

          Otto, I can understand what you were saying now. I’ve worked with the new menu system for a while and I’ve had some errors with it. Also, it is very hard to work with when you have a large number of menu items. (Drag and Drop just doesn’t cut it.)

          There should be an icon on the end of the main menu bars where all sub-menus could be closed. Then drag and drop would make sense.

          I think the menu system has a ways to go before it’s ready for prime time.


        • better to have obama try something and mess up rather than not trying to do anything at all. -worked in an argument with my republican friend. but, i’m actually liking the idea of the menu function, but i really can’t think of a practical way on how to use it.

  11. Pingback: WordPress for Affiliate Businesses: Outsourcing Works « WordPress Community Podcast - Online Radio - WebmasterRadio.FM

  12. Pingback: WordPress Podcast: WordPress for Affiliate Businesses: Outsourcing Works | WordPress World

  13. Pingback: Now running on WordPress 3.0 beta 1 | Bonsai Hacker

  14. Denzel Chia says:

    Hi Dougal,

    To add to your awesome list,

    There is a function in WordPress 3.0 that generates a login form anywhere on the theme, by including it into the desired location in the theme template.
    Now, theme designers can easily have a login form in their sidebar!

    Here’s the link to WordPress Codex;


  15. Pingback: Upcoming WordPress 3.0 in detail - Blog of Leonid Mamchenkov

  16. Pingback: Looking Ahead At SS!AB 2010 | Sea Slugs! Anime Blog

  17. Pingback: I WEAR FASHION» Twiggy X Lomo » testtest

  18. Snegurka says:

    I look forward to the release WP, to test new functions

  19. Pingback: Preview of WordPress 3.0 | Brian.Carnell.Com

  20. Bill Masson says:

    Great article and i am really looking forward to WP 3.0 release. A question about changing a normal site into a multi-site network. As you say you have to add the magic directive to your wp-config.php file “define( ‘WP_ALLOW_MULTISITE’, true );”

    I have around 60 wp installations, so do i have to change each wp-config.php file on all my existing wp installs? Or do i just have to change the main wp site?

  21. Pingback: ?????? ?? ??? ?? Dougal Campbell?? ?? ?? | ?????

  22. Pingback: Around the WordPress Community: WordPress 3.0 is the Talk of the Town | WordCast - Blogging news, Blogging podcasts, WordPress podcasts, WordPress plugins, WordPress themes, WordPress news

  23. Pingback: Wordpress 3.0 new features - Reaper-X

  24. Pingback: WordPress Podcast: WordPress for Affiliate Businesses: Outsourcing Works »

  25. Akosiniko says:

    i was also able to put a “share on facebook” and “retweet button” for my blog.
    html codes because java script don’t work.
    Check this guys 🙂

  26. Pingback: WordPress?????

  27. WordPress 3.0 works perfectly, but I am still missing the way to save different sets of plugins and only having to turn on or off the set, I am missing the ability to quick select the categories, just start typing the name of the category and this is filter for easier selection, I am missing a better image resizing or editing, anyway, I love wordpress.

  28. Pingback: WordPress 3.0 is official!

  29. Pingback: WordPress 3.0 is official! « Inspired

  30. Pingback: What Can You Expect From WordPress 3.0 — ForSite Media

  31. Pingback: ?????? ?? ??? ?? Dougal Campbell?? ?? ?? | ????? ??

  32. Pingback: Today in WordPress world – 06/04 – Jeremy Herve

Leave a Reply

%d bloggers like this: