It's assumed that you have a basic knowledge of PHP. This will include a knowledge of:
If you don't have a good grasp of those concepts, you should make sure you have a firm understanding before continuing.
It's also assumed you have a code editor that has PHP syntax highlighting, although these will be beneficial:
- Auto Indenting
- Brace matching
- Syntax checking
It's important to have a local development environment. Gone are the old days of changing a PHP file then updating it on the live server and hoping for the best.
With a local environment, you can work faster, no more uploading and downloading files, being at the mercy of a dodgy internet connection, or waiting for pages to load from the open web. With a local server stack you can work on a train in a tunnel with no wifi or phone signal, and test your work before deploying it to the live server.
Here are a few options for setting up a local development environment. They fall into two categories:
- Virtual Machines ( including containers )
- Native Server Stacks
The first type of environment usually involves projects such as Vagrant based projects or Docker, and gives you a standardised consistent virtual machine to work with.
The second, installs the server software directly into your operating system. There are various tools that make this easy, but your environment will be unique and more difficult to debug. These are sometimes called LAMP stacks, which stands for Linux Apache MySQL PHP.
You may be surprised to find out that outside of linux, docker containers still need a Linux host OS. To get around this, macOS and Windows create Alpine linux VMs using the OS provided hypervisor. On macOS this is a Hyperkit VM, and on Windows this is a Hyper-V VM.
Microsoft Internet Information Services is the server software that powers Windows based servers. Variants of it come with Windows if you install the appropriate components, but knowledge of IIS setup in the WordPress community is rare. Most remote servers run an Apache or Nginx setup, and developer knowledge is geared in that direction.
IIS is not the easiest route to take.
A vital part of working in teams and contributing is version control. Version control systems track changes over time and allow developers to collaborate and undo changes.
Also known as svn, this is a centralised version control system, used for the plugin and theme repositories on WordPress.org.