This week, we’re going to work with self-hosted WordPress (WP), and for me, that’s a task that comes easily for me. I’ve been working with WordPress since 2006, and WordPress is also the CMS I use when I implement websites for clients. I’m not going to talk about all the benefits that exsits with WP, but I love it because it is flexible and extensible, and it is easy to write code for extensions.
A WP site is installed either on a local server (for example, if you need a development install) or on an external server – either your own or from a hosting company. For local installs, I used to use WAMP, but lately, I transferend to Locally, a WP install service from Flywheel. This one, you can also connect to some external hosting companies using internal FTP, but I usually do that with Filezilla.
For hosting I use several different hosting companties: one.com, Uniweb, ProISP and Domeneshop. For clients, where I decide which hosting to select, I go with ProISP. Their servers are both fast and cheap, which is an excellent combination for websites.
It is easy to install WP on the server. You can either transfer all the files (more than 15000 of them) or the zip file using a FTP client. If you transfer the zip file, you have to unpack it by ssh before you can install it. Once the files are in place, you navigate to your domain and the install will begin. You need the credentials to MySQL and a few minutes later, you’re ready to go.
A clean WP install is not impressiv, although it can be used as is. You have pages and posts, menus and image libraries. If that’s not what you’re looking for, you can either install plugins to enhance functionality or a theme to change the look’n feel.
When I build websites with WP, I use a page builder, Elementor, to build the layout of the page. Elementor is a visual editor where I can drag’n drop widgets to the page or post. The widgets comes in all shapes and sizes, and if I cannot find one that covers what I need, I write my own in PHP.
Other plugins that are usually in my setup are:
- Advanced Custom Fields Pro, that extends the content model of wordpress. For example, I can extend a post with extra fields such as lists, galleries, text fields etc. This can also be done programatically, but here Elliot in ACF has done the hard lifting for me. Much of this functionality can be replaced in JetEngine, but not ACF Flexible content which I use to make clients have more flexibility in the way they write their content
- Dynamic Content of Elementor, that extens the way I retrieve data from the content model. Dynamic.ooo can also handle dynamic visibility
- Jet-package from Crocoblock. This includes JetEngine where I can create my own content types. For example, if I create a tourist website, I can make a content type called Experience. I can then enhance Experience with meta fields and taxonomies. Taxonomies can be used for filtering, with Jet Smartfilter
- WP Rocket for caching
- Yoast for SEO
- Smush Pro for image compression
- Happy Files for making the media library more user friendly
- iThemes security, for changing the security level of the install
I manage several websites using a tool called ManageWP, where I can login to all WP installs I administrate with one click. I can also do upgrades and backup here.
I have several websites that are mine, either business related or personal:
- https://portfolio.sivhansen.no, where I published the portfolio for last semester
- https://sivhansen.no, this site
- https://pixlweb.no, my business
- https://papirklipp.no, my business
- https://hoserogband.no, my business where I sell bunad related items
- https://nittiturer.no, where me and my friend describes hiking trips we do
All of them are WordPress sites. I first encountered WordPress in 2006, when WP was a blogging platform and only 2 years old. I worked as a student developer at the University of Bergen, and my task was to make the platform a multi-editor platform. WP did only support one user back then. Since then, WP has developed alot! And I have learned even more. However, I would like to be a better wordpress developer. WP uses hooks to hook into WP code, either an action hook, where you change functionality or filter hooks where you change output. I know how to write my own and to hook into WordPress core, but I haven’t understood how to hook into third-party plugins or theme functionality yet.