Ideal WordPress Plugin Development Using PhpStorm 8

The upcoming PhpStorm 8 features built-in WordPress support, as explained in this support document. However what’s the best way to set up your WordPress install in order to write plugins? Here’s my personal answer — feel free to suggest alternatives in the comments section.

When working on a WordPress plugin, you don’t want functions, classes, variables, etc. from other plugins to leak into your current plugin through auto-complete or other types of automation. For this reason, I suggest avoiding opening a whole WordPress checkout with all of your plugins inside of it using PhpStorm. At the same time, you don’t want to have a separate copy of WordPress for each plugin that you work on. This is redundant and makes keeping WordPress up to date harder.

So instead do a single checkout of WordPress to its own folder and then define WP_PLUGIN_DIR and WP_PLUGIN_URL, as described on the Codex, so that your plugins folder will live outside of your WordPress folder. This way you can open and index the WordPress folder without getting all of your plugins along with it.

Now create a new project for each individual plugin. When doing so, you’ll want to add the WordPress folder as an include path in PhpStorm, as described in their documentation.

All of this will result in only your individual plugin’s folder showing up in PhpStorm but with WordPress showing up under the “External Libraries” list. This one WordPress install can be used in your browser to test all of your plugins but the plugin codes won’t overlap.

Portable PhpStorm

I use PhpStorm to write all of my code for my job at Automattic. It’s an amazing IDE and has made me so much more productive.

However I am an outlier at my company in that I use two different computers rather than only a laptop — my powerful desktop with a big screen at home and my super portable ultrabook laptop when on the go. In order to keep my working environment identical on both machines, I install all of my work applications in portable mode. That is they store their configuration options in files alongside themselves rather than in my user directory or in the computer’s registry. This allows me to keep the applications stored on Dropbox which in turn keeps them synced between my two machines.

PhpStorm by default stores your configuration settings in files inside of your user directory. This is ideal for multi-user machines where each user should have separate settings. This however doesn’t apply to me. So how do you get PhpStorm to store those settings somewhere else?

After installing PhpStorm inside of your Dropbox directory (I have a “Programs” folder for these kinds of things), you need to go into the bin folder inside of PhpStorm’s directory and then open up the idea.properties configuration file in your favorite basic text editor such as Sublime Text or even just Notepad.

EDIT: You don’t even have to install it. If you take the direct download link and swap out .exe for .zip, you’ll get a ZIP file containing all of PhpStorm. You can then extract it to your Dropbox. I’m sure the process is something similar for Mac users.

At the top of the file you’ll find some commented out that have values with ${user.home}/.WebIde/ in them. You need to uncomment these lines and then replace ${user.home}/.WebIde/ with something like ${idea.home}/prefs/ which will instead store things inside of a “prefs” folder inside of your PhpStorm folder.

Lastly you should probably copy the contents of your old .WebIde folder (instructions to locate it can be found here) into the new location so that you don’t lose your existing settings.

Enjoy!

Editing Your Hosts File In Windows

Andrew Nacin mentioned here at WordCamp San Francisco 2011 where your hosts file is on Mac (and Linux), but I thought I’d point out where your hosts file is on Windows and how to change it so that you can point domain names to your local computer.

The easiest solution is to create a shortcut that will open Notepad and then tell it to open your hosts file. Right-click your desktop and select New → Shortcut. Paste the following into the field that pops up:

%windir%\system32\notepad.exe %windir%\System32\drivers\etc\hosts

Once you’re done creating the shortcut, right-click it and select “Properties”. Under the “Shortcut” tab is an “Advanced” button. Clicking it will show a checkbox for “Run as administrator”. This is important because otherwise you won’t be able to save your changes as the file is a protected one.

Opening it will show a little documentation and some examples. If you want to add your own, just add it to the bottom in this format:

	127.0.0.1	yourdomain.com

Saving the file and then visiting the domain in your browser will now show you files served by your local development environment. Note: a hard refresh may be required to due to your browser’s DNS cache. This can be accomplished by pressing control and F5.

This post was updated to recommend using a shortcut instead of manually opening Notepad as an administrator.