Over the course of many WordPress site builds, I found a constant problem when dealing with custom post types: I wanted to add meta data to a post type like you do a post. In this talk I gave a brief overview of why he needed to be able to do this and how he went about it, building a plugin to provide this functionality.
If you are like me then you spend a lot of your day navigating around the WordPress admin, looking at the admin screens to carry out different tasks. For the right type of client, they probably spend a lot of time in there too. Therefore I thought it was a good idea to try and use the WordPress admin as a little marketing opportunity. Here is how I went about it.
This all started out with me asking the question of how can I get across to current clients the other work and services that I could offer them. My website is not great, it is just a blog (something which I need to work on!) but usually you would list your service and products on your site. However it is probable that current clients don’t really visit your website that often, after all they already have a relationship with you and contact you in other ways.
Therefore I wanted to explore ways in which I could get this information across to clients. I started to think what is the one place that I have access to add content too, which all my clients see on a regular basis. I have clients that spend much of their days in the WordPress admin, managing their sites content to generate them leads and therefore I thought that I could use the admin in some way to engage clients with new content and services from me.
For a while now I have been using a plugin I wrote called WP Basis to make some changes to the WordPress admin screens in order to make the experience easier for clients to use. The plugin takes away some of the unwanted stuff such as menus and meta boxes that are not used and would just confuse the client. However one thing that it did do was to provide a different dashboard screen for clients, rather than the complicated default dashboard.
With this in mind I went about altering this dashboard screen the client sees to include some additional information. The following assumes that you already have a plugin that adds a custom dashboard page for your clients. If you need a little more help with this take a look at how I have done this with the WP Basis plugin on Github.
The approach I decided on was to use tabs. I wanted to make the dashboard feel as native a possible, fitting in with other WordPress admin styles etc. There is already a tabbed section on the WordPress About page. This is the page you are directed to when you have upgraded to the latest version and therefore it seemed logical to use the same approach.
I added the following function to output the content of the new dashboard page.
The above code adds the welcome tab and I have made this code extensible so that I can add tabs in the future using other plugins to show other things. The tabs work in that you declare a tab and a tab name using a filter and then you do the same declaring the callback function for the tabs content. You then create a function with the same name as your callback in order to show whatever content you like here.
Making it extensible means that I can use the base plugin on all sites (WP Basis) and then add other plugins which add tabs and tab contents to the client dashboard. Below is an example of a tab that was added to one site – this actually advertised services for another agency as it was a site built by me for them! Each linked through to their website with information about the service.
This is very much work in progress and I have lots of ideas for other content to appear on the dashboard of clients. Some ideas are below:
- Use RSS to grab the latest blog posts and display them on the dashboard
- Show latest offers and promotions. Again this could done using an RSS feed from another WordPress site which would automate this.
- Videos of how to use the site
- Contact form for support, which creates a ticket on your support system
What do you think? I would love to get some feedback on the ideas here.
Over time we all tend to build up a number of apps, programs and other bits of software and tools that we like to help us along, doing various jobs. Without them we would feel lost and therefore here is a list of the tools in my toolbox that I use when building WordPress websites.
The list below is in no particular order of importance, just what came to my mind at the time!
I guess this is the software that I use most on my Macbook Pro. It is one of those pieces of software that you forget about really as it is always open. Previously I favoured Chrome (it is still great) but since the web developer tools were improved in Safari I have gone back to using it. I like the integration of bookmarks and browser history across iOS devices too.
2. Coda 2
This has been my text editor of choice for a few years now. Initially I liked the FTP capabilities it had but as I have now moved on in development terms to using version control and deployment tools I rarely use these. There seems to be other (better?) ones out there but I have no problems with Coda and therefore have stuck with it for now.
Until recently I have been a bit of a command line novice. In fact I would still say I am a novice but I have started using it much more when working with Git. Also as a I now have a number of WordPress plugin on the WordPress.org plugin repository I have had to get used to committing my plugins etc. using SVN through the terminal.
As I have mentioned above, over the last 18 months or so I have moved over to deployment tools rather than relying on FTP. When doing this I researched which deployment tool to use and came across DeployHQ. I like it because I can deploy to multiple server or even server groups and it has good integrations with things like Slack which allow me to get notified when deployments have been made.
As well as this I can have committed code automatically deployed to staging or live when a commit to the repository is made. This is something that I need to refine further but certainly something I am going to look into soon.
All the WordPress websites I build I do so under version control. My choice for this is GIT and I tend to use either Github or Bitbucket (more recently) in order to have a central repository of code.
I use the Github for Mac app in order to avoid the command line as much as possible and this works for both Github and Bitbucket repositories. How I ever developed sites without having them under version control I will never know!
For local development I use MAMP. Instead of investing the small sum in MAMP Pro I use the Virtual Hosts capability in MAMP in order to create local domains for developing sites on e.g. domain.dev.
Although there are other options out there at the moment, most notably Vagrant and Virtual Box, I like how MAMP works and at the moment it does the job for me and therefore I am loathe to change at this point.
7. Gas Mask
This is great little app for managing and editing your computer hosts file. This allows me to easily setup local domain names, integrating with virtual hosts.
It even allows you to have multiple hosts files and you can then switch between then when you are developing.
If you are not using a password manager these days to keep all your passwords nice and strong (the longer the better here!) then I would highly recommend you do so. There are a few out there and I have been using 1Password for a while. It has mobile apps to so you always have your passwords on hand.
Only in the last 6 months have I started having a go with SASS. It was only when I found CodeKit (see below) that I started the experiment with SASS. It allows me to keep my CSS much more organised in a project.
As I often work with other teams on projects it is important that I track my time. Toggle has a useful desktop App that I can use to track my time and assign this to projects and clients. It also allows me to create reports on a per project or per client basis.
I also make extensive use of Slack, Skype and the usual Adobe Creative Suite etc. What do you use?