Last Assignment

This is the final week of the P2PU WordPress Development course. Read on..

We don’t want you to have too much work this week. After all you’ve already reached this point and that’s uber awesome. However we do want you learn something new. So here is what we have planned:

Client X has called. He is having a blast watching the statistics for his new photography site.He started thinking how hard would it be to start selling his photos via his website. In this final week you will help Client X to turn his photography site into a online photography shop.

The goal is to have a new page on Client X Website where he has listed all is photos with an associated price and possibly a link to some payment gateway (e.g. PayPal). Don’t worry, it’s not that complicated since you can use one of the availble e-commerce plugins for WordPress:

As usual for approval on this assignment you will need to provide a link to my e-mail at with your p2pu username.

Cheers and don’t forget, always Enjoy!

Skeleton Custom Post Type for Week 4

Last week’s assignment on my P2PU WordPress development course was all about exploring custom post types, that nifty feature that 3.x brought us and that has made everyone talking about using WordPress as a CMS more seriously.

Unfortunately its not so easy to get into custom post types, especially if you’re coming from a non-programmer background. As a way to ease that pain I decided to share a skeleton of the custom post type so instead of starting from scratch you can start from a working version.

As I was planning to do this, @dannygsmith beat me to it and provided the following code. Use it and abuse it, this is your chance to get the assignment done ;)

Custom post type ‘gallery’: download

Also Núria Ramoneda decided to share some links to help you in the process:

Thanks to both of them and get to work everyone. Time is running down! But don’t forget.. Enjoy!

Week 4 – Exploring Custom Post Types

This week’s assignment:

If you got to this point you call honestly call yourself a self-learner. Most folks have quitted or fallen behind. If you’re still with us, congratulations, you are part of the top. However, before you can call your status you’ll have two final assignments. This week and the final next week. For this week assignment read on…

Client Y loved your work and asked if you could provide a full site, based on WordPress,  besides a blog. This would involve having a WordPress installation with a blog page (where blog posts will go) but also a page where photos will appear with some  information. He would like the ability to enter photo information via the admin panel.

Suppose he wants to add a photo. He should have the admin panel option ‘New Photo’. Within this menu he can add:

– Photo’s Title
– Photo’s Description

And as extra fields:

– Location where the photo was taken
– Year the photo was taken
– Camera used

The photo itself will be added via the ‘Featured Image’ metabox.

Can you do it?

Hint: Custom Post Types are ideal for this kind of job.

Stuff that can help:

– Provide a link to my e-mail for approval on this assignment with the subject: “your_p2pu_user/assignment4”. Results will be posted on-line afterwords.
Update: For your changes to take effect on the frontend, meaning in the appearance of your site, you will need also to update the theme files in order to retrieve the extra fields and display them.
I would like to take the opportunity to say that I will personally raffle a WordCamp Lisbon ticket ( to the students that finish all the assignments. This is a great opportunity to visit Portugal and learn more about WordPress and the community behind it :-)

Week 3 Assignment

This week’s assignment:

Assignment #3 – P2PU WordPress Development Course

This week you’re sick of doing client work so you’ve decided to explore some WordPress things by yourself and learn by doing.
You’re especially inclined to try different hooks (actions and filters) and how to use them. As a goal you’ve decided to do a plugin that your clients can install on their blogs and that will add a Help button (in the admin) that they can click to message you (send you an e-mail).

– Provide a link to my e-mail with the subject ”p2pu_username/assignment3″  for approval on this assignment. Results will be posted on-line afterwords.

– Be sure to drop by today (Wednesday) on Campfire (, we’re here to help you!

Walkthrough for Week 2 Assignment

I will quickly go into how Assignment 2 could be solved.

For the first two items in the assignment (the custom login form and custom admin panel) you could use one of the many available plugins, see [1] and [2] in the resources section for my recommendations.

For the third item in the assignment (the custom widget) almost everyone in the class used a poll plugin. This was not what I wanted initially but reading the assignment now I can clearly see I led everyone in the wrong direction :)

The goal was to have a widget where in the admin you could choose your tribes and in the frontend you display them. Here is how the front view and the admin view could look like:

The Widget Barebones

Our widget needs an initial skeleton from where we can built upon. A widget can be created either through a plugin or a theme. In this case we will create a simple plugin that creates our widget. So to start you would create a directory ‘week2assign’ in the plugins directory and have a single file also called ‘week2assign.php’ containing:

This would be enough to have it in the plugins list and enable/disable it.

The Basic Widget

For a widget you normally need two functions, one to register the widget (register_sidebar_widget) and another to register the control function for the widget (register_widget_control). The first function has a basic template which you can see below and that is normally used:

This should be enough to start seeing your widget in Appearance->Widgets section.

The Widget Control

The widget control function is where you display the code for the widget controlling options. In this case it will be a checkbox for each of the possible options:

Because the list of checkboxes checked is kept into an array we need to use the serialize function in order to be able to save the array into the database.

A Small Enhancement

When you click save in the widget options you’ve probably noticed that the tribes you selected are not checked as marked. This is because although they are saved in the database, we didn’t check if they were marked. For that we can make a small enhancement to the control function to do just that:

You’ll notice now there is a is_tribe_selected function which is merely a function to check if a certain tribe is listed as checked. The code for this function is:

The Full Widget

The code for the full widget can be found here or downloaded here.

I hope this has been a useful walkthrough. Cheers and always Enjoy!