My WordPress learning journey, so far...
Tags: wordpress, careerdevelopment, learning, webdev
Published: 2024-05-06 23:11:30

I started to work with **WordPress back in 2015**, while in physics college, just to get some money. At first, as a freelancer, I was just a plugin/theme installer by saying so, with **no clue about how things worked under the hood**.

Over time, I needed to understand how WordPress plugins and themes were hosted, which led me to learn about host companies and set DNS domains, and tasks using CPanel. Later on, I had to work with VPS, hosted by companies like Digital Ocean and AWS. Also, that's how I learned to work with Apache, NGINX, and Linux servers back in 2016.

## WordPress under the hood

Ok, after working on tasks setting up all DNS domains, installing WordPress, connecting with the database, choosing a theme, and installing plugins for clients' projects, I came to the question: How do those themes and plugins interact with those bunch of WordPress core files downloaded from WordPress.org? To understand that, one of the things I had to learn was PHP, which started in 2016. With PHP knowledge I was able to actually understand WordPress - even wrote an article about that: [WordPress under the Hood](https://dev.to/sarahcssiqueira/the-wordpress-request-lifecycle-45ie).

## WordPress themes

Despite the amazing [themes available for download](https://wordpress.org/themes/) on WordPress.org, I needed to make websites look beautiful to the client's eyes, and sometimes the projects needed further customizations. That led me to research, learn, and work with WordPress themes. Initially, I learned how to create WordPress child themes, and later on, finally learned to create my own themes - something I am still learning to be honest.

Here are two open-source themes I worked on, you can see [here ](https://github.com/sarahcssiqueira/purpleish-theme) and [here](https://github.com/sarahcssiqueira/base-wp-theme).
In the process of creating a WordPress theme, I needed to handle the frontend part, which led me to dive, among other things, into CSS and JavaScript about 6 years ago, in 2017.

## CSS

CSS can be very tricky if we underestimate it. If you work alone on a project and everything is still fresh in your head, it's easy to maintain, but after some time, if you don't structure things well, it becomes a nightmare to maintain.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c4z7yzexc84gykp2810n.jpg)

When you jump into a project with distributed teams, you must find ways to organize things. After that conclusion, one of the things I started to learn was SCSS, which proved to be great for my needs and my chosen option nowadays. However, compiling all the files took SCSS a lot much time. To increase productivity and get rid of this manual task, I learned Gulp. 
Somehow I read that Weppack was more complete but had a bigger learning curve, well, I am not afraid to research, so I learned Webpack, my way to go nowadays.

Here is a [Webpack sample I developed to work in a WordPress](https://gist.github.com/sarahcssiqueira/67cdfa82fd3f310719e7f076010ae13b) theme.

## JavaScript

JavaScript was also required to create mobile menus and carousels for example. The same problem with CSS arose in JavaScript: compiling and minifying those files used to take so long, here is where Webpack shows up again and is very handy.
Again, [my webpack configuration file](https://gist.github.com/sarahcssiqueira/67cdfa82fd3f310719e7f076010ae13b) is here.
Of course, JavaScript is not used only for that, there are a million possible uses, and that's why something I keep learning and searching (and will do forever).

## E-commerce

In 2018, after this journey as a freelancer, I started an e-commerce of pet supplies. The project was and still is based on WordPress and Woo (former WooCommerce). During this time, I faced lots of challenges being the most experienced IT person in the room at some points.
On the e-commerce, aspect, Woo has several amazing plugins to enhance an e-commerce project, but paying for them was not an option back then. At that point, among other tasks, I started to learn how to build plugins.

## WordPress plugins

Due to our tiny budget, I had to create our own plugins, like this to customize order status or this other one to create custom post types.

## MySQL

What tells about databases? Last year, I worked in server migration, from AWS to Digital Ocean LAMP server, migrating all tables of a WordPress/Woo project, handling errors with data formats, and primary keys, cleaning data that was not needed anymore, optimizing, changing the collation for InnoDB. 
I like to use **PhpMyAdmin** as a tool to handle those MySQL-related tasks. 


## Coding Standards

There are multiple ways to solve the same problem, also we can organize files differently, but in the open-source world, using standards makes it easier to share your work with others.
Today, I use Composer to manage PHP_CodeSniffer rules like WordPress Coding Standards. [I wrote an article about how to set up it correctly](https://dev.to/sarahcssiqueira/setting-wordpress-coding-standards-per-project-using-composer-g46).

As a project grows, everyone involved must speak the same language, it will make things way easier and will help with productivity.

## React and Next

Yes, I had to learn React to work with WordPress, but that's a subject for another post, I think.

## DevOps

In the WordPress context, deployment is basically synchronizing plugins and theme files to the respective paths.

I used the old approach, syncing files through FTP - which is not a very productive approach let's be honest - so I started to use automation like GitHub actions for CI/CD. 

In this repository, I share some [workflow samples](https://github.com/sarahcssiqueira/reusable-wp-workflows) to deploy WordPress projects.

## My next steps

Right now, in my learning journey, I am focusing on exploring advanced WordPress aspects like Gutenberg Blocks and Block Themes. Also trying to improve my writing test skills with PHPUnit.

Through the years, I got the ability to see the bigger picture. And if got stuck on some problem I don't know exactly how to solve, I am not afraid to jump in and acquire the needed missing skill. That's my learning approach, sometimes I get lost banging my head against the wall, but when I finally get why something is happening, that's my friends is the funny part of this work.

And you? What about your learning journey? Any suggestions about something I need to learn/explore?