New plugin: Top Pretty Links widget

Pretty Link

Thanks to Twitter, URL shortening services are basically a must. What bothers me is that by using them, you are giving them all your statistical data. Some of them offer you an account to log in and view some basic stats and then charge you if you want additional reporting. Bah! That drives me crazy!! I don’t want to give them my data for free and then have them charge me to view it. I want the control in my hands! So I did what I normally do when something like this rubs me the wrong way, I went looking for a solution built around WordPress. That’s when I found Pretty Link Pro.

I bought the pro version of Pretty Link and installed it over at h.awkins.com with the goal of using it as my own personal hub for URL shortening. The script has a bookmarklet that makes it dead simple to create new links. After using it for the past week, I realized that I wanted to be able to display a list of the most popular links I send out. Since all the data is stored in my database, writing a plugin for it was simple. Suck it, bit.ly!

Top Pretty Links widget
The plugin is pretty simple. Add it to your wp-content/plugins folder, activate it and then add the widget to your site from the widget menu. I’ve added a few options so you can display the click count or shorten the descriptions if you don’t want huge titles wrapping across multiple lines. Here’s a couple screenshots.


Download it
The Top Pretty Links widget is free and you can download the zip file here. If I didn’t make it obvious before, you will need the Pretty Links plugin as mine is only a companion plugin.

I hope you find it useful!

Big thanks go out to Blair Williams! I’m absolutely loving the Pretty Link plugin!

(funny side note: I’ve been using twitterfeed to auto-tweet my blog posts. They, of course, use bit.ly. Fixing that is next on my list….)

RoloPress review

RoloPress Layout

Since starting 9seeds back in October, we’ve collected a fair amount of contact information for clients and prospects. The trouble is, we don’t really have a single place where we can keep that information and share it between our geographically diverse team. I’ve tried a few CRM programs like Sugar CRM and Highrise, but a CRM is way more than what we need. I’m just looking for a simple way to store my contacts and make them available to the people in our company.

I entertained the idea of building my own contact manager as a theme for WordPress using Custom Post Types and Taxonomies. But before I wrote my own, I sent a request on Twitter asking if one already existing. That is when I was introduced to RoloPress.

From their About page:

RoloPress is an Open Source Contact Manager, licensed under GPL v2, and built on the WordPress platform (also, Open Source). That means that you can download it, modify it, do whatever you want to it. Isn’t Open Source great!

I took a quick look at their demo site, and at first glance, it appears to be exactly what I’m looking for. So far, so good. Time to test it out myself. After downloading the core theme and the child theme I was ready to get started!

Installation:
I had a little trouble, albeit self-inflicted, with the installation when I tried running the theme on an existing WordPress install on my development server. It did not care for the existing content in my database. So to install it, here is what I suggest:

  1. Set up a fresh install of WordPress
  2. Delete all default pages and posts
  3. Upload the RoloPress core and child theme
  4. Activate the child theme

Side note: If you are planning to run RoloPress on a server accessible via the internet and don’t want to give everybody access to your information, you should install a plugin like Force User Login.

Setup:
RoloPress is VERY customizable. After the install the first you need to do is select one of the many (13) page layout options by going to Appearance -> Layout from the WP dashboard. I messed around with a few but settled on “2 columns, primary on top right, secondary on bottom right” which looks something like this:

The content for each layout is handled by widgets. Again, there are many to choose from and you’ll likely want to play around with the placement and order of the widgets. After you have a few contacts in the system, try moving the widgets around and viewing the results to find the configuration that works best for you.

After the install and setup are completed, you won’t be back to the WordPress dashboard unless you want to tweak more settings. Everything else from this point forward takes place on the front end of the site.

Adding Data:
When you first install RoloPress, it creates a few pages automatically. Two of those are used for data entry; Add Company and Add Contact. When I first viewed the page I instinctively clicked Add Contact. The Add Contact page is really straight forward. It has all the requisite fields you’d expect in a contact management system, including a field marked Company. I’ll come back to that in a second.

I filled in all of the contact information for one of my clients. I clicked the Add Contact button and then headed back to the home page to check out my handy work. Here is what my results looked like:

The form saved my contact just fine, but it also created a record for a new company. The trouble is, the company record was entirely blank. I clicked Edit for the company, updated the information and saved it and everything was fine. This is obviously just a bug and I expect they’ll clean this functionality up in a future version.

One other small bug I found on the Add Contact page also has to do with the company field. I entered 9seeds, LLC as the company name, and when I saved the page, it assumed the comma was a delimiter and it created 2 company records. I removed the two blank company records and decided to try the Add Company page first. I filled in all of the information about the company and saved the entry. I then went back to the Add Contact page to test it out again. In the screenshot below you can see that the form auto-suggested the company name. This worked perfectly and was really simple now that I had the process down.

Finding Contacts:
Once I had a few contacts in the system, I was really curious how well the search functionality was going to work. If you have a ton of data in the system, how good is it if you can’t get to it easily? I have to say that the search functionality in RoloPress is excellent! I tried a bunch of different searches; first name, last name, part of an address, city, on and on and on. Here’s an example of a search I ran for “hen”. It returned 3 results where ‘hen’ was found as part of a street name in the first record and part of the city name in records 2 and 3. You’ll also noticed that it returned 2 contacts and a company record.

In Summary:
From a developer’s standpoint, since RoloPress stores contact data as metadata attached to posts, building add-on functionality that uses that data for things like mass emailing your contact list would be pretty straight forward if you are already comfortable building WordPress plugins that interact with post data. And, if you can’t find a layout that matches your exact needs, taking the existing parts and creating a new template would also be pretty simple.

RoloPress isn’t ready for enterprise level Contact Management, but, if you just need a place to store some contacts, it does a solid job. I’m definitely going to continue using it as it fits my needs perfectly. The small bugs I found have easy workarounds so I don’t see them being any trouble whatsoever.

WordPress and the need for canonical plugins

A few weeks back I attended WordCamp New York. While there I was asked to take part in a discussion on canonical plugins for WordPress. I had heard of the concept but not the terminology. In case you are in the same boat, to make a plugin canonical would be to mark it as the suggested plugin for a given genre.

Why do we need canonical plugins?

Currently there are around 7500 plugins in the WordPress repository. If you are looking for a plugin related to Twitter, you’ll currently get 36 pages of results. Without going through and testing a bunch of them, how do you know which ones are good? The voting system isn’t a great indicator of a plugins value because it’s too easy for a developer to game that system simply by having a group of friends all log in and give it a 5 star vote. What’s worse, a developer who creates a plugin today may not have any interest in submitting an update to the plugin in the future. If a future WordPress update causes that plugin to no longer work, users of that plugin are stuck.

I’ve heard it dozens of times over the past year, “I’m afraid to update WordPress because I’m not sure my plugins will work.” So now we have people who are willing to continue to use a version of WordPress that may have known security issues because they can’t be sure their site is going to work properly once they update. Put bluntly, that sucks!

How would it work?

Even though it’s in the early stages of planning, here are some thoughts on how WordPress might implement canonical plugins:

  • Find the current “best in breed” plugin for a given genre
  • Ensure that the plugin works with the most current version(s) of WordPress
  • Ensure all known security “Best Practices” are implemented in the plugin
  • Turn the plugin in to an open source project (ala WordPress itself), with the original developer’s OK, of course
  • Prior to any new WordPress release, all canonical plugins would be tested to ensure they work properly
  • When a user does a search for a plugin in a genre with a canonical plugin, it would be listed at the top of the search results and indicated as the “approved” plugin

Who benefits from canonical plugins?

First and foremost, the end users benefit the most. Especially those who might be scared to update WordPress for fear of breaking something. If all the canonical plugins go through a round of testing prior to the release of a software update, the chances of your site having issues after the update goes way down.

Developers should also benefit from it as well. Consider this: going back to my mention of 36 pages of Twitter plugins. That’s nearly 400 plugins that probably all have a base set of the same features with only slight feature differences. Rather than creating an entire plugin from scratch and flooding the repository, what if instead they produced a child-plugin that attaches to the canonical plugin and adds in the specific functionality they need. This may not be a perfect solution in every instance and a whole plugin may need to be developed from scratch. But, that’s OK. The repository isn’t going anywhere. You can still create from scratch if you wish.

So, what’s the downside?

Honestly, I can’t really think of a downside. I’m sure there will be people out there who will come up with a list of reasons canonical plugins are bad. I just can’t think of any.

When are canonical plugins coming?

As I mentioned, this is in the early stages of planning. There are definitely a ton of options to consider. Taking a complete stab in the dark, I’m guessing it’ll be summer time before this sees the light of day. There is still plenty of time to throw your ideas in the ring. If you have thoughts on how to make the system kick-ass, you can leave a comment below and I’ll see that it hits the proper channels. Or, check out this coincidentally timed post in the WordPress development blog…

Building a plugin

header_afop

I’ve always thought it would be cool to write my own WordPress plugins. Plenty of times I’ve taken existing plugins and tweaked them here or there to do a slightly modified version of their original intent, but never have I started from scratch and created my own plugin. Until now, that is.

Last week I decided I wanted to place an advertisement in the main body of blog posts on my site. But, I didn’t want these ads to show on recent posts. Instead, I wanted to make them show up only on posts that are older than 30 days. Initially I went in to the WordPress theme and added the code directly in to the template. My plan worked perfectly and the ads were now showing on old posts, but not on new ones. Once I realized how handy this chunk of code was, I decided I may want to use it on other sites, and other people may want to use it, too. That’s when I decided to turn it in to a plugin.

When we went to WordCamp Denver, I sat in on the Plugin Workshop hosted by Shawn Parker from Crowd Favorite. I remembered one of his slides had a list of all the places you could hook in to WordPress to perform your own actions. I was happy to find that he had posted his slides online and also included the sample plugin that he created during the presentation. I used a combo of these two pieces of information to create the first version of the plugin. My new plugin was crude and not ready for public use, but, it worked!

If I wanted anybody else to be interested in using the plugin, I knew I was going to have to create an admin section that would let people set up their own ads. I checked out several other plugins to see how they were going about it, but I couldn’t find an example that gave me exactly what I needed. Then I found the following article on the WordPress site: Adding Administration Menus. The fog had been lifted. 45 minutes later my plugin was fully functional, admin section and all. After a few hours of testing and tweaking, my plugin was ready for prime time. I zipped it up and released it to the world.

I would love to say that’s the end of the story, but no. Next I wanted to get my plugin listed in the WordPress plugin repository. This way, any WordPress user would be able to find my plugin and install it directly from their WordPress admin panel on their site. This would open my plugin up to several million potential sets of eyes. Far more than the number of visitors I have on my site. ;) Once again, WordPress documentation came to my rescue. The Plugin Submission and Promotion article explains the steps needed in order to get your plugin listed. After my initial submission was approved, I uploaded my files and my plugin was now available in the WordPress plugin repository.

It’s no secret that WordPress is easy to install and easy to use. But what most people don’t know is how incredibly well WordPress is documented. If you ever decide to write your own WordPress plugin, do yourself a favor and start by reading the Writing a Plugin article. It is filled with great information and links off to more detailed instructions for each of the major parts you’ll run in to along the way.

Now that I know the basics, I’m really interested in turning some other ideas I have in to WordPress plugins. Stay tuned.

Twitter Comments

hossain_ahmed RT @vegasgeek: Building a plugin http://vegasgeek.com/pv8
Re-Tweet | Reply | View Tweet

Blog Tip: Clean Your Blog

I just set a reminder in my phone to repeat every 2 months. It says 3 simple words; CLEAN YOUR BLOG!

I logged in to the admin section of JohnHawkinsUnrated the other night and was checking the plugin page when I realized I had to scroll down a page and a half to get to the plugin I was looking for. I then scrolled back up slowly and realized that there are quite a few plugins that I have installed that I just don’t use/need any longer. I went through and deactivated at least 7 plugins that were no longer being used. I’m sure there are more that I can remove, but was trying not to go overboard on my first pass.

Wigets, this is another area that I need to be careful with. They are so easy to install, but you really need to evaluate their value to your site. Are they worth the space they are taking up on your site? Are they worth the extra load time it puts on your blog? If not, kill ‘em.

Take 5 minutes and go through your WordPress plugin page and remove any plugins that aren’t being used and then remove any widgets that are taking up space on your blog and are not adding value to your readers. Your blog should be lean and mean. There is no bonus for having the most plugins running at once.

Remember, lean and mean.

Time to reevaluate Lijit

lijit

Today at the BlogWorldExpo show I went to a session called Power Widgets to Amp Your Blog. I don’t know exactly what I was expecting when went to it, but I ended up hearing about 4 different blog widgets. 2 of which I had heard of, 2 were brand new.

The one that stuck out most for me was Lijit.com. I had first heard about Lijit at last year’s BlogWorldExpo and right after that show I checked it out but it didn’t really take me by storm. When Micah took the podium and started showing it off, I thought I knew all there was to know about it. I’m glad I didn’t stop listening, because I was dead wrong.

Most bloggers don’t just blog. They create content all over the web. They upload videos to youtube, they add images to flickr, they may be on myspace, twitter, etc… Now, when somebody is on your blog and they do a search, Lijit gives you the power to return not only your blog post content, but a list of relevant videos, images and whatever other content you create across all your content streams. Plus, you can add in other blogs that you want to be part of your search base.

I’ve set up an account and will be updating my site to use the new search feature. I’m going to give it a much closer look this time around.