Child Theme Inclusion in the WordPress Directory

Before you get too excited, child themes aren’t yet in the theme directory. That’s what this post is aimed at achieving though.

For those unfamiliar with child themes, just take a look at this explanation of why and how to use them.

Just this week I released two child themes for Hybrid. Obviously this is my motivation for promoting the inclusion of child themes in the official WordPress theme directory. Though, I think this idea can greatly benefit the entire community. Today you won’t find any child themes in the directory because it doesn’t support theme yet.

Back in April, Justin Tadlock wrote a similar post that proposed several changes to the directory. Joseph Scott took some time to reply and address some of the issues facing his proposed upgrades.

Child themes pose an interesting challenge. In part because they can, at their own option, replace portions of the parent theme which makes automated testing harder. But perhaps the most difficult part to that puzzle is providing an easy experience for end users when they want to use a child theme. A number of people find it challenging to install a regular theme, adding another layer of issues for them to be aware of isn’t likely to help.

I’d like to expound on the problems and propose some specific solutions.

Problem: Testing and Approval

One of the problems brought up is that automated testing of child themes would be harder. I can’t really speak to this specifically since I’m not familiar with the automated testing that goes on behind the scenes, but here’s what I know is included in the automated testing:

  • Verification of certain style sheet requirements (i.e. theme name, version, tags)
  • Checks for the existence of a screen shot
  • Checks for the uniqueness of the theme name and directory name

Perhaps it checks for the existence of certain templates, but in the case of a child theme the automated checker could ignore that rule.

Other than that, I can’t come up with anything more that might be included in the automated testing. From my limited knowledge, those wouldn’t present any problems in the automated testing. The rest of the theme development checklist includes things that would need to be manually checked.

So, with a couple of minor tweaks (checking if the style sheet signifies a parent theme and possibly ignoring the existence of certain templates) I think the automated testing could easily be achieved.

Manual Approval

After a theme makes it through the automated process it moves onto manual approval. This process wouldn’t be any different than the existing process. In fact, child themes would probably present fewer problems than standard themes because they would likely adhere to most of the templates established by their parent.

Problem: User Experience

“perhaps the most difficult part to that puzzle is providing an easy experience for end users when they want to use a child theme”
–Joseph Scott

Indeed, this is a hard part. Especially since another point Joesph made was that lots of users still have a hard enough time understanding how to use themes in general. So let’s keep that in mind while I present some options to integrate child themes into the directory.

Redesigning the Theme Page

We’ll start with the parent theme and we’ll use Hybrid as an example. Essentially, we need to make Hybrid the primary theme and avoid the child themes dominating any of the UI. Since the theme pages already use tabs I figured we could add a “Child Themes” tab if any child themes exist.

Parent Theme
Hybrid Theme Page

Clicking on the theme title or the screen shot would take you to the child theme’s unique page.

I think child themes should have their own pages. They would need their own page because they too would have their own “Stats” tab, ratings, and what “others are saying” section.

Child Theme
WP Full Site Theme Page

Of course a reference to the parent theme is necessary so a simple information box should suffice.

This is where the user experience complications begin.

Notice the “Download” button has a note that the parent theme will be included in the download. This prevents anyone from downloading a child theme, uploading it and being confused as it why it doesn’t work. There’s one foreseeable dilemma here. If someone downloads a child theme, uploads the child and the contained parent theme and unknowingly overwrites an older version of the parent theme there may be compatibility issues. I don’t see any way around this, but I wouldn’t say its a deal breaker. More on this in the next section…

Automatic Installer

Installing from within WordPress presents another issue. The installer would need to check if the parent theme exists. That should be easy enough. If the theme exists then skip installing it, however, what do we do if an older version exists? Do you prompt the user with an option to upgrade the parent?

Problems:

  • User installs the child, upgrades the parent, but the child theme isn’t compatible with the current parent version
  • User installs the child, skips upgrading the parent, but the child theme is dependent upon the latest version

I’m actually stumped on this one. I could really use some ideas here.

Summing it Up

The inclusion of child themes in the official WordPress Themes directory is good idea because it gives themes greater flexibility and makes theme management easier for users. There’s a few problems to overcome before allowing child theme submissions into the directory, but nothing a little more brainstorming can’t resolve. I think with enough support from the community we could get this implemented rather quickly (who can even know what that means though?).

Update: Vote for this idea on WordPress.org

WPMU.org is Celebrating

WPMU.org, possibly the biggest influence on the WordPress MU community, is celebrating the fact that they’ve created just about 100 plugins, themes, and videos specifically for WPMU.

I’ve been an on-and-off-again user of their products and services and think they do a great job. I’ll most likely be using their resources a bit more in the near future.

So, if you’re looking for WPMU support/plugins/themes then you’ve found it.

Start of WordCamp Day 2

For those of you at WordCamp Dallas you don’t want to read all about it again, and for those of you not in attendance, you can watch what you want here: http://www.ustream.tv/channel/cali-live. You’ll also be able to find details of the sessions on some of the people’s sites below.

So, rather than bore you with information, let me fill you in on some new faces.

So this is just a handful of the people I’ve met so far and encourage you to check out.

WordPress Tips 2009

WordPress Tips 2009

I was looking through one of my old posts, Hardcore WordPress Tips, and realized just how outdated it is. It’s just one year old this week and already 5 of the 10 tips I would consider bad information.

Most of the bad tips are simply because WordPress evolves so rapidly that there are better solutions now. A couple of tips I need to revise because I’ve learned a lot more since last year and have better advice.

So, on with the show: WordPress Tips 2009

10. Use the Yahoo! User Interface Library

For theme developers, creating a theme that is flexible is a must-do today. WordPress has been around long enough that crappy themes shouldn’t even be made anymore (unfortunately they still are). One step to ensure that your theme isn’t crappy is to take advantage of some incredible resources Yahoo! provides.

The YUI Library is hosted code: Javascript and CSS. I just use the CSS. Using their grid system, creating a theme is easy, flexible, and much more easily browser compliant. Check out more details in my Easy Workflow for Site Creation post.

9. Interlink!

spider-webThe more you link to other content on your site the more bots access it. The more bots access, the more impressive you may be in search engines.

Link to Similar Posts

You can certainly do this manually in your post by referencing old blog posts…and you should. But you should also use an automatic method as well. Linking to related posts helps search engines categorize your page better. The more you can zero in on what your page is about the better you rank.

Similar Posts, by Rob Marsh, will do just that. Similar Posts not only does a great job with what it’s supposed to do (retrieving relevant posts) but it’s part of a plugin family that all use the same library for configuring functions. Read on…

Link to Popular Posts

Popular Posts is another member of the family of plugins written by Rob Marsh. So rather than use several methods of retrieving posts, stick with one to keep your life easier and things streamlined.

8. Lockdown

With every release WordPress becomes more secure. On the other hand, everyday hackers become increasingly smarter and more malicious. Out of the box, WordPress can’t be as secure as it’d like to be, so they even give us some tips.

WordPress’ site already has an article on on Hardening WordPress.

One of the quick things you can do is restrict access to the WordPress administration side. Create the file, “.htaccess” in /wp-admin/ and paste the following into it, replacing the IP address with your own. Find your IP.

AuthUserFile /dev/null
AuthGroupFile /dev/null
AuthName "Access Control"
AuthType Basic
order deny,allow
deny from all
# whitelist this IP address
allow from 55.555.555.55

Secondly, create an empty index.html file in your /wp-content/plugins/ directory. This will prevent the listing of your plugins for the world to see, making it a bit harder for hackers to find exploits.

Next, delete the username “admin” (obviously make a new username for yourself first), and use a strong password for your login.

Finally, install WP Security Scan to make sure everything checks out.

7. Boost Your Site’s Speed

You can optimize your site all you want, but if you’re not on a good host then you’re going nowhere. So first, switch over to HostGator because they’re the best host I’ve ever used.

After you’ve setup on HostGator, hardcode some things in your theme.

WordPress themes work by including functions that make calls to the database that give it the correct paths to files, etc. This is great for making a theme portable, but it ends up slowing the site down by taxing your database more than necessary.

Anywhere you see…


…you can replace it with your root level URL (ex. http://www.example.com/)

You can change…


…to the path of your stylesheet.

I could go on. But all you really need to know is to look for functions that you could replace with absolute paths and reduce the amount of database calls.

WP Super Cache

WP Super Cache is an awesome plugin that caches your pages and serves them up more quickly. It comes with lots of options which is really nice. It can be a bit difficult to install sometimes, but it may really pay off. It’s especially nice when you have a load of extra, unexpected traffic.

6. Give Some Flow to the Bots

robotOf course we know that bots (spiders) crawl the Internet checking out pages in order to provide results in search engines. These bots need some direction when they’re crawling — basically they crawl link to link. Obviously we need to give them some links. We need to give bots the right links. In addition to links, there is some meta information bots will pay attention.

The best solution for directing bots where you want them to go (and don’t want them to go) is by using the Robots Meta plugin.

For example, you probably don’t need bots to waste their time on the following pages (especially if you’re a one-author blog):

  • The login and register pages
  • All admin pages
  • Author pages
  • Date-based archives
  • Tag archives

Using this plugin you can prevent bots from accessing these pages and really create a well defined path for spiders.

5. Setup Shop With Google

google-analyticsGoogle Analtyics

Google Analytics is the leader in website stat tracking. Create an account and paste their code in the footer.php file of your current theme.

If you’re not comfortable with editing code, don’t know where your footer.php file is, or you change themes frequently then a plugin is your best option.

Google Analytics for WordPress makes the tracking script easy to install and also has a few extra goodies for making tracking your site usage even better.

google-webmaster-toolsGoogle Webmaster Tools

Google Webmaster Tools is an awesome resource that gives you a behind the scenes look at how Google is interacting with your site. There’s too much valuable information here for me to even begin to describe, so just create your account already!

Well, there is one thing you should know about. You’ll need to submit a sitemap to the Webmaster Tools site and there’s no better WordPress sitemap generator than the Google Sitemaps Generator for WordPress.

4. Use Header Tags Correctly

A theme that is well made will have already taken this into consideration. Search engines pay special attention to how a site’s code is written. Certain tags like Header tags can give text more importance as well as define how a page’s content is organized.

Make sure your WordPress theme knows How To Use Header Tags Correctly. This particularly applies to your sidebar. It’s full of incorrect header tag usage by default, so make sure to correct those issues.

3. Meta Information – Title, Description, Keywords

Go grab Head Space 2, a robust plugin for customizing page titles, descriptions, and keywords. This will make your website much more SEO friendly…as long as you know what you’re doing.

Once installed, you can use the following as a guide for how to configure the plugin:

  • Posts / Pages: %%title%% - Blog Title
  • Categories: %%category%% Archives %%page%% - Blog Title
  • Tags: %%tag%% Archives %%page%% - Blog Title
  • Archives: Blog Archives %%page%% - Blog Title

Courtesy of yoast.com.

2. Permalinks

chainPermalinks, or the URLs to pages on your WP site, are part of what makes WordPress the best choice for a blog or CMS. WP allows you to customize your URL structure very easily.

By default, however, WordPress URLs aren’t optimized for search engines. Recently it’s been pointed out that your URL structure can slow your site down as well, so let’s take a look at building the best permalink.

Permalinks for Speed

WordPress needs to know what page to display when given a URL. For example, http://example.com/2009/01/22/hello-world/ is obviously going to take us to the “Hello Word!” post. How does WordPress know that though? Through several attempts of trying to figure out what the URL is trying to get to WP will finally figure it out. It’s in that time, though, that your user is waiting for WP to figure things out.

Basically, it’s easier for WordPress to retrieve the page/post if a numerical value is the first thing in the URL (i.e. %post_id%, %year%, etc.).

Don’t look to my site as an example because I’ve just recently learned this and haven’t gotten around to changing things up yet. Also, this method isn’t necessary. You won’t notice any difference in speed until you’ve got hundreds or even thousands of posts/pages, but it’s always good to build a scalable site from the start.

Read more details on efficient permalink strategies.

Bad:

/%postname%/%post_id%/
/%category%/%postname%/

Better:

/%post_id%/%postname%/
/%year%/%category%/%postname%/

Permalinks for SEO

So if we want a speedy site (by using the method above) AND we want to ensure that our URLs are the best for search engines, then the following method is the choice.

Having your keywords in the URL is always a plus. Search engines can use it as further evidence for what your page is about. Google also places the URL below each search result and bolds keywords — just another way that might help improve your chances of being clicked.

So we need to make sure to include %postname%. This will render the post/page slug (ex. hello-world). If your site is heavily reliant upon categories you may want to include your category name as well. So here’s our options:

/%post_id%/%postname%/

or

/%post_id%/%category%/%postname%/

We can even take this one step further. Your URL doesn’t need to contain every word from your post/page title, just the significant ones. Instead of hand editing every permalink you can use SEO Slugs to automatically strip your permalinks of stop words, like ‘a’, ‘the’, ‘in’, etc. SEO is all about the details!

1. Prepare for Disaster

alarmBackups are often an afterthought (like after you lost the data!). The truth is, the world is fallible and for one reason or another your site may get royally screwed up someday and you’ll either be back up and running within an hour or your heart will still be fluttering as you look blankly at your missing files and database.

We make mistakes, servers make mistakes, web hosts make mistakes, so just count on it. Be prepared!

Backup the Database

Get yourself the WordPress Database Backup plugin. You can schedule DB backups or get on-demand backups. I have my backups emailed to me weekly (with Gmail that’s no biggie). I’ll always have an archive…as long as Gmail doesn’t blow up.

Backup the Files

Secondly, backup your server files. If for some reason everything goes wrong, you’ll need the database and your theme (especially if you’ve done any customization). Plus, the image paths stored in the DB won’t have anything to show for themselves without files on the server.

Some hosts will allow you schedule file backups and this is the ideal situation. If they don’t have a solution to do this, then you’ll just need to be well disciplined and do this yourself via FTP every once in a while.

WordPress provides great detail on database and file backups.

Conclusion

I hope this guide has been a great help. Please add your own advice or questions in the comments.

You can also subscribe for regular WordPress, SEO, and web design tips.

Good luck with WordPress in 2009!

Better WordPress Search Needed

For a current client we are trying to improve the reliability of WordPress’ search engine. By default, WP sorts results by date. You could argue that this makes sense for a blog because the most relevant results may be the most recent, and WP obviously made that argument. Realistically, people want relevant results, no matter the date (most of the time).

Plugins to Improve Search?

I set out to see how we could bring WordPress up to par with most search engines – a vain attempt at competing with Google search. The first and most popular solution for “fixing” WordPress search I came upon was Search Reloaded by Semiologic. Certainly Search Reloaded improves the accuracy of the search which is a step in the right direction. But even Semiologic admits it’s not perfect. When using Search Reloaded the results were thinner and more accurate, but sometimes you want more comprehensive and have them sorted accordingly.

Example: Searching for “arthritis” without Search Reloaded returns lots of results, including an article on Osteoarthritis. The same search with Search Reloaded returns only one article title Arthritis.

Ideally, both the Arthritis article AND the Osteoarthritis articles would be returned and sorted accordingly.

Sprucing Up the Search Page

After realizing that I may not be able to do much with the behind the scenes searching I tried tweaking the search page itself to at least give the appearance of a smater search engine. I started with Yoast’s WordPress search tips. Per Joost’s advice I added the Search Excerpt plugin to extract the snippet of text around keywords and bold the keywords in the snippet. I also added his Search Suggest plugin that catches possible typos and suggests the correct spelling (just like Google), and in adition it displays a list of keywords related to the search keyword as suggestions for related searches.

Still Lacking

Despite all of the changes, the search results still lack exactly what we need to achieve: comprehensive, yet accurate results.
Any suggestions for improving WordPress results or are you willing to write a plugin to do so?

WordPress Meetup Summary

This weekend I went to my first WordPress Meetup which was held in PD Johnson’s in Dallas. I wasn’t too sure of what to expect; the summary of the group made it seem like it would be pretty informal. It was. Everyone trickled in, about ten of us, and while some of us ate and others pulled out laptops we chatted mostly about Twitter and WordPress plugins.

Most of my time is spent with people who know little about technology, forget about WordPress and blogging, so hanging out with people who I can actually talk to those things about is refreshing.

However, I know that Dallas has a much larger audience of WordPress fans and major (or at least more than minor) bloggers. I was disappointed that the group doesn’t seem to attract enough of the audience using blogging and social media to its fullest extent. Granted, the group hasn’t been meeting for very long (just since April I think).

What I’d like to see more of is a formal atmosphere where people are encouraged to share with the whole group about how they use WordPress, what benefits it has for them, and how others can improve upon their blogging. One of the reasons I wish for this is because I’ve spent the past three years learning everything I can about WordPress and I’m dying to share the knowledge I’ve gained. It would be neat if the meetups consisted of neatly packaged topics so that the goal is clear and people know why they are coming and what they’re taking away.

On the other hand, maybe the point of these meetups is simply to socialize with other WordPressers and something so formal is outside the lines of what is thought necessary for the group. In that case, I’d love to be part of a new group that encouraged the formal training/learning of WP while the meetup group existed alongside the new group.

Any thoughts?

Coming Soon: Premium WordPress Theme For Churches

Update: Checkout ChurchRoot for my WordPress themes for churches.

I’ll be releasing a Premium theme (yeah, capital P) in the next few weeks, maybe a month or so even. It will be specifically tailored to the needs or desires of church websites. Although, the very same features it will include could easily be used for any type of organization. The basis to the theme will be that the emphasis is taken off of the blogging and put on dynamic content such as events, sermons, audio, and different categories of traditional blog posts.

I’ll be doing this because I’m building a site for Denton Bible Church that will be used for one of our services. I’ve turned this into a pretty unique theme theme that I’m pretty proud of. About a year ago I built the CollegeLife, the college ministry of Denton Bible Church, site and this new theme will take what I learned from that and build upon it greatly.

Several years ago I created about 10 different HTML/CSS templates (non-WordPress though). I submitted them to 2 or 3 sites and to my surprise they’ve been downloaded probably over 100,000 times now…and they weren’t even that good!

I’ve come a long way now and I can produce much higher quality sites. So be on the lookout for the new theme!

Upgraded to WordPress 2.5

I’m all upgraded to the newest version of WordPress and I have to say – I like it.

The coolest feature so far is the one-click plugin upgrade. It sure beats deactivating, downloading, unzipping, uploading, activating and finally configuring after 5-10 minutes of setup. Now, it takes seconds!

It may take me a while to get used to the interface, but I do like it better than my initial impression. I really don’t like that most of the interface is a fixed width; the fluid design made things much less crammed together, but I do see the benefits in it (Most people have fixed width themes, so why have huge writing panels? Also, you can now write in full screen mode.).

All of my plugins upgraded successfully, save my ‘related posts’ plugin. I’ll fix that soon!

Overall, I like the upgrade and can’t wait to take full advantage of it.

I’ll have a new post soon with some more SEO tips!

Be sure to checkout my post on online reputation management profiles.