Menu Close

Alex Has Nice Hair

I'm a WordPress Developer, based in Los Angeles. I run a Digital Creative Agency, called DigiSavvy. I can't resist a Hendricks… Oh, and I've got some nice hair.

Connecting Dots

I had an awesome time at WordCamp SF this past week. I learned a lot and connected with some amazing folks. But I came away with some ‘Deep Thoughts,’ Jack Handy style… This camp got me thinking and inspired in a way that I hadn’t felt since my first WordCamp.

October 2013 this seemingly agitated fella, Derek Neighbors, gives a talk at Pressnomics. The one thing he asked: “What, as a community, have we done with our market share and influence to make the world a better place?” This question rubbed some folks the wrong way; confused some (like me) and got some folks nodding in agreement. It sounded nice, but a challenge without direction is tough to digest… This talk was never too far from memory from that moment on. I often wondered how the talk applied to me…

December 2013, WordCamp Las Vegas, a guy known in the community as “Accessible” Joe gives an impassioned talk about accessibility and the web. It’s a talk that he’s given in some form before… It’s also one of the first times I began to think about accessibility in the work I did.

October 2014, WordCamp San Francisco; Matt Mullenweg gives his annual ‘State of the Word’ address to a packed in-house audience and countless others watching from elsewhere in the world. Mullenweg shares challenges, motivations and accomplishments. He also provides the fact that WordPress continues to grow in usage as it now powers 23.2% of the web. That figure is staggering; one in every five or six sites you see are running good ol’ WP.

The WCSF Community Summit. I can’t say much about the Summit since we’re supposed to keep specifics to a minimum. What I can say is that it was a privilege to be in attendance. Thanks go to Jen Mylo for that.

But it also got me thinking about something else…

Being more than the 23.2%

I’m not sure how much I can share, so I can’t be too detailed here. What I can tell you is that a quick exchange between a pair of contributors caused me to have an “aha moment.”

The exchange came down to this notion: Yes, WordPress is a leader, with its market share and overall usage. BUT leading in market share alone does not make you a leader…”

Basically every discussion I participated in at the Community Summit came down to this notion that numbers don’t always matter; cold-hard facts don’t always matter; action matters; what we set ourselves out to do and how that helps others is what matters. Popularity is nice, but it doesn’t do much for the world around us. Does it? No. There are ways we can take action, use this acquired influence and knowledge to make things happen.

This goes for connecting with our tech neighbors in the community, such as the PHP, jQuery and Ruby groups as an example; this extends to not just inviting other groups to join our community, but to step out and join theirs, too. We also need to consider how to make this WordPress thing and all it touches accessible to people of all walks of life, native tongues and abilities. What good is a product’s market share if it can’t bring everyone along for the ride? Yes, it’s a big idea, but I think it’s one worth working toward.

That said, I know that there’s already countless things that have been done and have been worked on to help those around us. I’ve been a part of a couple of these things in the post couple years, having attended a GiveCamp and Website Weekend LA. That said, I know I can do a little more. I think we all can.

Obviously, I’ve been trapped in my head the last 24 hours. Inspired, really and thinking about how I’ll make a contribution. I’m going to start small. I’m going to start with my starter theme and making it accessible and re-submitting on .org. And then I’ll write about that. So there’s that. Beyond that, I’ve got some thinking and planning to do.

What will you do?

Help Scout Desk. The Support Ticketing Tool WordPress is Missing

There I was writing up a post about a then soon-to-be-released plugin called Sprout Invoice, by a cool fella named Daniel Cameron (I call him Tito, although he doesn’t like that, too much). I got to check out the beta version, but it does some critical things very simply. Handling payments and deposits for estimates and proposals like a boss. My write-up for Sprout Invoice wrote itself. It’s that good.

Well, I figured I’d keep an eye on that product and check-in here and again. I’ve already got a solid process in place I’m not in a hurry to change.

When I went to check out Danny Tito’s Twitter feed I saw this:

The words “Help Scout Desk” caught my attention because that’s what I use to manage support tickets over at my agency, DigiSavvy! So I had to check it out. Reason being is that while Help Scout is awesome (read: not shitty ZenDesk) it’s limited in that it’s all email based, so zeroing in on threads, for the client, can be difficult.

I have a couple retainer and maintenance agreements out there who track the time I bill for and the tickets I issue for the tasks I’m given. Everything goes into Help Scout. But, they often ask me, hey, what was the deal with ticket #555? Then I have to login, check it out and review the support history. It’s just easier to do it that way. Which is okay, but I wanted it to be better and figured, hey, there’s gotta be a plugin for that.

This is where things turn into a review

So I headed over and purchased a single-site license for Help Scout Desk, after clearing up a couple of questions with the developer. I dug in and got to work.

What is Help Scout Desk and why did I think it was a keen idea to buy?

Help Scout Desk is a WordPress plugin. It requires that you have an active Help Scout account (the free Help Scout account won’t cut it, you’ll need to upgrade) to make any use of either service together. Further more, Help Scout Desk allows you to post your support ticket threads/history on your WordPress site. This means if your clients login to your site with their email they use to write to you via Help Scout they can see their ticket history! AND they can also create new support tickets.

How is that better for me?

Help Scout Desk helps a bit for my workflow in a couple of ways. One, it provides a central ticket archive, on MY site, for my clients to login and review and, if they want to, they can create a new ticket. This helps me cut some back and forth with clients in tracking down tickets and what folks are paying for.

The beauty of Help Scout is also one of the things that can make it cumbersome to use. It’s email based, as far as the support interactions go.

Customers send an email to your Help Scout Address and a ticket is issued and assigned. My friend Nathan, I think, uses his own address for support tickets to track biz dev conversations. For me, I solely use it for Support ticketing.

Who is this for?
People who love and use Help Scout!

Will this plugin replace Help Scout?
No! Help Scout Desk simply provides an alternate client-facing view, hosted on your website, for your clients to review their tickets

How does it look?

It can look however you want! Fortunately theming Help Scout Desk is an easy process. It’s accomplished by copying the folders and files inside of the help-scout-desk/views folder into a folder in your template called hsd_templates. And then you go in and style it up however you want!

That said, the basic styling should be enough for most. If not, a basic gist for your css can be found here.

Here’s what I have so far.

Screenshot 2014-10-14 00.11.23

Screenshot 2014-10-14 00.10.01

 

That took me about 30 minutes to get down. Not too shabby. =)

How is this better than ZenDesk or something similar?

I’ve only used a few tools for support. One was WHMCS, ZenDesk and now Help Scout Desk for the last two years. Simplicity is the biggest reason I use Help Scout. It’s easier to set up and to manage and to integrate with as well. ZenDesk is a beast, like it or not. It just is and WHMCS’s offering was good for a time for me, but I’d always get complaints from clients about tickets not getting processed. No good! Help Scout things like that aren’t an issue. Everything is via email and it’s simple. Clients typically don’t know they’re even in a support thread exchange.

I love tools that allow me to make complex things simple. Support is simple with Help Scout and now, with Help Scout Desk, I have an actual portal that customers can go to review their ticket history and current tickets and it doesn’t break my workflow up at all.

Definitely give Help Scout Desk a try to let me know what you think, if you do.

WordPress, Composer, Desktop Server and You

The actual guide to this post is at the bottom. Click here for the tl;dr version. =)

I recently wrote about my pet project that I built a site for. In messing around with that project, I’d learned a good deal about Gulp build tools and all the neat things they can do. Yet, one thing I’d never had, that always knew I wanted was a way to install the proper themes/plugins that I wanted. This was something I’d pursued a couple of years back and left it alone when there was no good answers available… The best answer I could come up with was to have a dev site that had all my commonly used plugins… While, sure, that was cool; let’s face it, it fucking sucks.

So what’s a guy to do?

Well, with build tools and more modern practices of theme development taking over the conversation of theme dev, along with some advanced offerings from Roots and Compass, it’s kind of hard to ignore all the cool stuff people are talking about. It’s also hard to ignore all the cool things these newer themes are doing. They compress js, css, concatenate your js, auto-prefix, error checks it, spits it out on to a rocket-ship that zips the fucking mess you just made into an installable theme package. And it delivers pizza to the dome. Wins all the way around. So that’s what I’ve been knee-deep in during those times when I can work on Some Like it Neat. I want to be one of the cool kids, too!

Well, the one thing I haven’t touched is Dependency Management. That is, a method of managing and easily installing/updating packages that your project is dependent on. Now, I’m not an expert with this stuff, dependency package managers or build tools/gulp etc. I’m just messing around with them and trying to make them fit into a workflow my mom won’t harangue me about.

Enter Composer

Dafuq is Composer anyway?

Composer is a tool for dependency management in PHP. It allows you to declare the dependent libraries your project needs and it will install them in your project for you. Dependency managemen

What does that mean for you and me? I’m slow to pick things up, but after reading around on getcomposer.org and seeing what some other really smart frakkers have written, I came to the conclusion that Composer “is a good thing” for WP theme devs.

Specifically, you can define, for instance, any number of plugins you use that reside on the WordPress.org repo, Github, or your own repository. Now, each of those alone is a pretty big topic and when I talk about this I want to be sure it’s all in digestible chunks.

What I took from reviewing Composer was that I could define commonly used plugins, such as Advanced Custom Fields, What the File, Webmaster User Role etc and have those easily downloaded and updated within my project. My project being whatever site I happen to be working on. The Holy Grail! Yasssss!

Because I do things the hard way, I bypassed a lot of what had already been written on this topic and went straight to tinkering around with shit I had no idea about!

I first installed and setup Composer in my theme directory. And it worked. I was able to download and install themes and plugins like a Champ… Except for the fact that doesn’t work because those files then get installed within your theme folder and not to where they should go, in their respective themes and plugins folders. Boo and a hiss! My bad. DON’T DO THIS!!!

From what I’d read, lots of people use Composer to not only grab Plugin files, Theme files AND WordPress Core! I hadn’t thought about getting core into the mix. In any case, my read on this was that Composer was to be installed in your project/site’s root directory, or in a directory above that. As I pondered how I could work getting Core into the mix, I ran into a problem…

What About Desktop Server?

I have been using and loving Desktop Server for a good couple of years now and recommend it to pretty much anyone who will listen, including the lady with the crusty shirt at the Gym I never go to. It’s that good, imo! So how do I version core with Desktop Server and Composer…

Well, ya don’t. At least I haven’t. Why?

Whenever I spin up a new project, I use Desktop Server’s nifty ‘Blueprints’ feature which allows me to choose different installation profiles when building a WordPress site. A couple of years ago Gregg Franklin, of DS awesomeness let me in on a nifty tip. Cloning WordPress Core/Trunk to a Blueprint folder. Boom!

Well, with that in mind, I knew that I already had a recent copy of Core to work from. So what I ended up doing was setting up a composer.json file and a composer.phar file and placed it within my Blueprint folder with Core in it. It’s not the most elegant solution, but at least when I spin up a new site via DS, that site can then easily install my starter theme and preferred plugins by issuing just two commands.

Getting up and running with Desktop Server and Composer

To get going here you should be a little familiar with Git, at the very least you need to know how to clone a repo down. 

Cloning WordPress Trunk/Core into a Blueprint

  • Find your Desktop Server XAMPP folder and go to ‘XAMPP/blueprints’
  • Clone WordPress Trunk: Now, you can use your favorite Git client, such as Tower (MacOS) or SmartGit (Win/Mac), or do it from the command line. If doing from command line, issue this command from the blueprints folder: git clone https://github.com/WordPress/WordPress

Okay, great! We’ve now got a versioned Blueprint of WordPress that we can easily update. Yeet!

Setting up Composer
Okay, I can’t guarantee I’m not going to fuck this up and send you into a mental tailspin.

  • You should be inside of your blueprint/wordpress folder.
  • Create a composer.json file and save to your blueprint/wordpress folder. I’ll get into some of what is going on in this file
    You can use my boilerplate here:

    {
    "name": "DigiSavvy Project Boilerplate",
    "description": "Plugins and Theme for Use with DigiSavvy Projects",
    "repositories":[
     {
     "type":"composer",
     "url":"http://wpackagist.org"
     },
     {
     "type": "package",
     "package": {
     "name": "some-like-it-neat",
     "type": "wordpress-theme",
     "version": "1.0",
     "dist": {
     "type": "zip",
     "url": "https://github.com/digisavvy/some-like-it-neat/archive/master.zip"
     },
     "require" : {
     "composer/installers": "v1.0.12"
     }
     }
     }
    ],
    "require": {
     "wpackagist-plugin/akismet":"dev-trunk",
     "wpackagist-plugin/what-the-file":"*",
     "wpackagist-plugin/developer":"*",
     "wpackagist-plugin/ninja-forms":"*",
     "wpackagist-plugin/jetpack":"*",
     "wpackagist-plugin/advanced-custom-fields":"*",
     "wpackagist-plugin/iwp-client":"*",
     "wpackagist-plugin/theme-check":"*",
     "wpackagist-plugin/webmaster-user-role":"*",
     "some-like-it-neat":"*"
    },
    "extra": {
     "installer-paths": {
     "wp-content/plugins/{$name}/": ["type:wordpress-plugin"],
     "wp-content/themes/{$name}/": ["type:wordpress-theme"]
     }
    },
    "autoload": {
     "psr-0": {
     "Acme": "src/"
     }
    }
    }

    https://gist.github.com/digisavvy/4f253ad84bafab6a6401

  • In your preferred text editor create a file named “composer.phar” and also save that to your blueprint/wordpress folder. It’s a Composer binary file and as far as I care, it’s that stinky-cheese eating kid that no one ever ate with in Middle-School.

Okay, so now we have a composer.phar and composer.json file here. Now what? Well, first, I do want to talk about the composer.json file a bit

What’s in the composer.json file?

All kinds of shit! I’m not going into all of it, just a few key points. This is where we set up the plugins and themes we want to download to your site.

Starting at the top
"repositories":[
{
"type":"composer",
"url":"http://wpackagist.org"
},

These lines tell us about a repository with a type of “composer” and a url of “http://wppackagist.org.” WPackagist is a site with a Composer repository that mirrors the WordPress Plugin and Theme repos! How cool is that? Updates around 15 minutes or so. Extra Yay!

 {
 "type": "package",
 "package": {
 "name": "some-like-it-neat",
 "type": "wordpress-theme",
 "version": "1.0",
 "dist": {
 "type": "zip",
 "url": "https://github.com/digisavvy/some-like-it-neat/archive/master.zip"
 },

This next block is where I’ve setup my starter theme, Some Like it Neat. You’ll note that this package is not on WPackagist, instead it’s coming to us from its spiffy Github repo. My theme isn’t properly version numbered, cause I’m a fucking hack like that.

Now with our two repositories setup I can run a command and Composer will download any plugins I’ve defined as well as my theme! My pants just got tighter thinking about… if I wore them, that is!

"require": {
 "wpackagist-plugin/akismet":"dev-trunk",
 "wpackagist-plugin/what-the-file":"*",
 "wpackagist-plugin/developer":"*",
 "wpackagist-plugin/ninja-forms":"*",
 "wpackagist-plugin/jetpack":"*",
 "wpackagist-plugin/advanced-custom-fields":"*",
 "wpackagist-plugin/iwp-client":"*",
 "wpackagist-plugin/theme-check":"*",
 "wpackagist-plugin/webmaster-user-role":"*",
 "some-like-it-neat":"*"
},
"extra": {
 "installer-paths": {
 "wp-content/plugins/{$name}/": ["type:wordpress-plugin"],
 "wp-content/themes/{$name}/": ["type:wordpress-theme"]
 }
},

okay, so here’s where we define our plugins and lastly our theme. Pretty straight forward. But look at that “extra” block there. Dafuq is that!!?

Well, Composer allows us to define an install path for our dependencies. From what we can see here our plugins and themes will go where we expect them which is to wp-content/plugins/plugin-name or wp-content/themes/theme-name

But before we all go getting too excited, all we’ve done is set up our config files for Composer. We actually have to install Composer on a per-project basis.

Creating a New Project and Running Composer

So far all of our work has been inside of the blueprint/wordpress folder. Now it’s time for us to actually spin up a new project.

  • Open up Desktop Server and create a site.
  • On the next screen is where you can select your blueprint. Select the newly available WordPress ‘blueprint’ you created and then proceed as usual to finish building your site.
  • Now, open a terminal (don’t lose your shit, this is easy-peasy here) and navigate to your new site’s root directory aka / aka forward-slash.
  • Run this command: curl -sS https://getcomposer.org/installer | php This should install Composer for this project
  • Now this is where the nifty shit happens. Run this command: php composer.phar install Hopefully if everything went according to plan and installed properly, Composer should be installing your plugins and themes, if you defined them. Go on, check your plugins/themes directory. Fucking cool, right?

So that is your long-winded, yet abbreviated, guide to WordPress + Composer.

Resources

Pet Projects

Those of you that know me, in the WP community circles have, at one point, heard me go on about a starter theme I’d been working on. I’m still working away at it and with these things, there’s never a done, done place.

You can always grab a copy of the starter theme over on my Github repo. Additionally, you can see the theme in action on this very site, this is a very early version of that starter theme. I rebuilt my agency website using my starter theme, called “Some Like it Neat” and I’ve used it on a number of projects since, each time the theme has evolved. I finally got around to building up a site for the theme (see it here) and have begun writing up documentation for using it.

The theme itself isn’t ground-shattering stuff by any stretch, but very cool, to say the least. At least I think so. It’s a fun pet project, though and one that continues to give back to me as I continue to work on it; the process of learning is very hands on. That goes without saying, though, doesn’t it?

I have a couple of themes I’m working on, built on it, that I plan to release on the WordPress theme repo. Stay tuned and as always feedback and pull requests welcome!

Older Posts