Categories
WordPress

WordPress for Project Management

This is a call to all those interested in using WordPress as a project management tool. I’m certainly not alone in desiring similar functionality that existing project management tools offer, namely Basecamp.

There’s been some attempts that are full on plugins, but they don’t quite fit the bill, and more importantly they’re out of date and mostly unsupported.

Before I tell you my plans, let’s make the case for WordPress Project Management.

Why Would You Want to Use WordPress for Project Management?

1. Because you can
This is usually a terrible reason for doing something, but WordPress is an extensible platform that’s obviously proven it’s worth so why not add to it some really great new functionality? WordPress developers have no doubt that it can be done, but it hasn’t been thoroughly tackled yet.

2. Cost
Basecamp and other PM solutions out there are reasonably priced, but we’ve been spoiled with open-source software, so we need our “free” fix. The cost does start to get steep when you’re managing lots of projects though.

3. De-fragmentation
If I could centralize all of the web-related things I do then I’d be much happier. I’d prefer that my project management and in-development sites be more closely tied together so that my clients can more easily stay in tune.

4. Control
We “WP self-hosters” love control. I’d prefer to control my brand, my data, features…you name it.

What Does Project Management Really Include?

  • User accounts
  • Multiple projects
  • To-do lists
  • Collaboration

At its core PM generally offers those. Let’s take a look at how WordPress can handle those. We’ll also introduce WordPress MU, since it has quite a bit to offer in our case.

  • User accounts –> Done.
  • Multiple projects –> Done. You can use each child blog as a project.
  • To-do lists –> I think 2.9’s introduction of custom post types could find a use here. There still needs to be some customization.
  • Collaboration –> Done. Posts and comments.

What Else Do We Need?

So if you wanted to use WP for PM today you could do it, but it’s not ideal.

I think WP should handle PM in the front-end for the most part. This way we can control the user-interface more easily, and only provide the user’s with what is necessary. This means we need a theme.

A Theme

Really you could use any theme you wanted and using posts and comments you’d have a fairly organized setup. Of course, they wouldn’t be ideal. A step in the right direction is the P2 theme. Most importantly it allows you to post directly from the front-end. Secondly, it presents posts and comments in a more digestible fashion than the traditional blog post UI.

Most people love the Basecamp interface, so we should really look to it for inspiration. In fact, it’s so nice that I decided to clone it.

I’ve created a new theme called Basechamp. Before you freak out, I know it’s a complete rip-off. I’ve intentionally just copied it while I experiment with the PM idea. It won’t be released to the public until its got its own skin. Also know that it’s a very incomplete piece of work.

So there’s a ray of hope that achieving a project manager can mostly be achieved with a simple theme.

What’s Lacking

What this theme doesn’t yet account for is the administrator. If you’re using WPMU to set this up you can assign a theme to all of the child blogs (each its own separate project). If you’re the admin though you may want to see an overview of all projects, so we’d need to add a template that called data from all projects.

What if someone other than the administrator is assigned to multiple projects, they need an overview page as well. I need to figure out how to best implement this.

All project updates need some sort of email subscription management (subscribe to new posts and comments, daily/weekly summaries, choose to notify certain users of the new post or comment).

To-list lists and milestones need an extensive calendar system.

So, My Plans?

As you can tell, I’ve got something in the works that I plan to release at some point. I’ve already got some support behind this, but I’m interested to know who else may be interested in using this and who might want to help finish it up. Also, the theme will be a child theme for Hybrid and Justin Tadlock has already shown some interest in the project.

In the meantime, we’ll call this Project Basechamp. Give your ideas for a new name when it’s launched.

What am I looking for?

  • A new design for the theme that takes inspiration from Basecamp
  • To-do list implementation
  • Calendar support for to-do lists and milestones
  • Robust email functionality
  • General help and ideas

How to get involved

Leave your comments. Also, join the forum. Serious developers will get access to the code.

Share your Basechamp feature ideas.

Categories
WordPress

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

Categories
WordPress

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.

Categories
WordPress

I’m Here: WordCamp

Categories
ChurchRoot

Launch of ChurchRoot

churchroot-banner

I’ve kept it fairly secret, but it’s time for the unveiling of ChurchRoot!

ChurchRoot is a brand new platform to find church WordPress themes & is my latest project.

In it’s very early stages, ChurchRoot is just offering one theme. There will be more themes, new pricing, a theme club, and much more in the coming months.

So go check out ChurchRoot.

Categories
WordPress

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!

Categories
General

Get a Free Website!

free-website-2009-125-1251…if you’re a non-profit.

So if you ARE a non-profit, or know someone participating in one, send them to freesite.developdaly.com.

I’ll be designing and developing a free website for one non-profit. The application is on the link above and the deadline is March 1, 2009.

I’d really appeciate if you’d share this post with your friends!

Categories
Themes

Introducing the WP Full Site WordPress Theme

WP Full Site Banner - WordPress theme for your small business

Major theme update: Version 2

Stumbling across this theme may finally be your answer to one of the most frequently asked questions about WordPress — where can I get a theme that caters to the needs of my small business?

Here! That’s where. WP Full site is a theme built for small businesses that want a website that enables them to use a Content Management System (CMS), have the option of a blog, and focuses on the necessities that all small business websites need.

A Small Business WordPress Theme

What exactly are the requirements of a “small business WordPress theme?”

Every business is unique, and no one can expect anything to be everything they’ve ever dreamt of, but there are some clear guidelines that a small business should adhere to with a website.

Your site should at least have:

  • An obvious way to be contacted, hence the phone number and email link at the very top of the website
  • A clear, concise call to action accompanied by an attention grabbing graphic
  • The option to have or blog or not have a blog

Make It Easy to be Contacted

WP Full Site uses one of the best practices in optimizing website conversion rates — that is, providing visitors with a quick, easy to find way to contact you.

By placing the phone number and a link to your email (or contact form) in the top right hand corner of your site visitors will always be able to find how to contact you. You don’t want to ever frustrate a potential customer about to be sold and have them give up because they couldn’t find the contact information!

In addition, studies show that providing customers with an easily findable phone number helps people feel more assured that you’re a legitimate business. Some people would rather call than email too — don’t lose business because they can’t find your number.

Call to Action

You’ve probably spent a lot of time thinking about how you wrap up what you’re selling into one sentence. Catch the visitor’s attention with your tagline, and then actually persuade them to convert with your customized call to action.

To Blog or Not to Blog

These days blogging is pretty highly suggested — one of the reasons you’re probably already considering WordPress. Blogging can help keep your customers stay involved in your business, increases your search engine visibility, and can position your company as an expert in your field.

Though blogging has it’s benefits, you may not have the time or interest to keep up with a blog. For you, WordPress is still a great option!

WordPress doesn’t have to be used as a blog. If you already love WordPress though and don’t want to find another CMS this theme is quite helpful in your pursuits.

Categories
Blogging

Site Updated & Why You Should Be Using Thesis

thesis-300x250First things first, the site has a refreshed look. It’s the same basic design it was before, but I’ve changed several things.

Before I get to the site changes, the other big news is that my site is now being hosted by HostGator. Previously I was on MediaTemple. Lots of great things to say about them, but the 1 thing that matters the most to any site owner is the availability and speed of the site.

All was great when I first started with MT, but things have been on the decline for a while….to the point that the site was taking 5-10 seconds to START loading. Crazy.

So I’ve heard great things about HostGator and things are MUCH faster. Good move Patrick.

Site Changes

Like I said, the basics are still here, but there were lots of kinks. Previously I meant to work in some fairly important features like, say subscribing to the blog and searching the site. Doh! Well, I wanted them in the design badly, but got stuck on how to actually make it work. I built the site upon the Thesis theme and because I was a newbie with it I failed to achieve everything I wanted.

Now, I’m no newbie.

That’s why I can comfortably tell you to download the Thesis theme for yourself (like right now!).

After playing with Thesis enough I was easily able to accomplish everything I wanted. Now I think the site is beautiful. Thesis takes care of so much and really makes my job easier.

So the actual changes include a sidebar with all the cool sidebar stuff. There’s better formatting in the blog, a subscribe button, and a smarter home page.

Categories
WordPress

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?