wordpress-logo

WordPress

WordPress is not just a blog-software anymore. Today, WordPress is an extremely flexible and feature-rich content-management-system that runs millions of websites all over the world.

WordPress started as a PHP-based, open-source-software for blogging in 2003. Today, it is probably the most wide-spread content-management-system (CMS) on the web. You can literally build everything with WordPress, if you find the right ressources. There are more than 40 thousand plugins and, well, who knows how many different themes.

 

There is a reason for the huge popularity of WordPress: Everybody can build at least something. Non-techies can start their own blog on a hosted version, like wordpress.com. Content-editors, who are able to create a database in MySQL-admin, can install a self-hosted version of WordPress with some simple clicks. They can also install plugins, choose themes, and even adapt the theme to a certain degree. Code newbies, who already know how a function works, can copy and paste hundreds of built-in functions, which spit out a list of posts, a list of tags, or something similar. If you are a serious PHP-developer, then you can dig deep into the architecture of WordPress and create everything from a simple blog to a shop of mid-range complexity.

This range of flexibility has some downsides, of course. And not everybody is enthusiastic about WordPress. But considering their huge success, WordPress is probably on the right path.

WordPress for Content Editors

WordPress has a complex interface for authors. There are buttons for nearly everything. It starts with creating a simple post and it ends with a full customization of your WordPress-installation. With themes, plugins, configurations, menus, widgets, and more.

Screenshot of the WordPress dashboard

WordPress provides quite everything you need as a content-editor: a media library, taxonomies, drafts and versions, a powerful commenting system, a user management, a built-in-search, and a lot of options for the appearance of your site. The menus and widgets are fully customizable in the user interface. All without any coding skills. You can simply drag and drop different widgets to the widget area and add nearly everything. For example, a list of articles from the archive, a list of categories or tags, a calendar, and much more. And if you are missing anything, you will probably find a plugin that does the right job for you.

WordPress provides a classic HTML-editor and some fields for tags, categories, meta information, and more. You can also customize the screen options of the editorial-view and fade information in or out,  like slugs, discussions, revisions, and more. As a content-editor, it will be hard to find any limitations with this system.

The downside of this flexibility: if you run a simple website, WordPress can feel like a huge feature-overkill. You can do literally everything with WordPress. You just have to find the right button, the right plugin, or the right theme. And this can be quite time consuming in some situations.

WordPress for Developers

There are thousands of WordPress-developers out there, and with WordPress you can start at any level of knowledge. Simply copy and paste some of the built-in functions and look what happens. Or you can develop a complex theme and an advanced plugin.

WordPress is written in PHP. It started with some kind of spaghetti-code, but then switched to object-oriented programming (OOP). WordPress never deprecated the spaghetti-code, so it is a mixture of both. And there are a lot of built-in functions that spit out fully-formattedHTML. This means that there is no strict separation of data and representation. But do you really care about that?

The installation of WordPress is pretty easy. Just download the code, rename the file wp-config-sample.php to wp-config.php, create a database (MySQL or MariaDB), and add the database-information to the wp-config.php. Finally, go to your-domain.com or to your/local/folder/ and fill out the forms for the installation routine. Then you are done.

But be careful: to migrate WordPress (e.g. from a local to a live environment) requires some additional work. Before you plan a migration, read the WordPress-documentation carefully. This is one of the dirtier parts of the system.

Some more aspects of WordPress for developers are:

  • Hooks: When you develop a plugin (or theme), hooks allow your plugin to ‘hook into’ the rest of WordPress. There are action-hooks and filter-hooks.
  • Action-Hooks: Actions are triggered by specific events, such as publishing a post, storing data, or getting data.
  • Filter-Hooks: If you want to change the data on its way from the database to the browser, or from the browser to the database, you can add a “filter-hook” to do it.
  • Custom-fields: Custom-fields are a great concept of WordPress. Every author can add key value pairs to any post. The custom fields are part of the standard-installation. Developers can easily access this data and print it out on the website. This requires a minimum of code work, and you can create something cool like a … fact sheet for each post.
  • Template hierarchy: WordPress has a specific hierarchy and a special naming-convention for templates and ressources. If you develop a new theme, you have to follow these conventions.
  • Enqeue scripts: If you add some ressources, like CSS, JavaScript, or something like that, then you do not write the code directly into the header of the HTML-document. Instead, you enqeue the ressource with a special function.

To create a template or theme in WordPress, you can use plain HTML and PHP. However, there are some kinds of WordPress-specific abstractions or layers with an enormous set of WordPress-specific functions. Sometimes, it is a bit hard to find the right function to get the right snippet or data. But like I said earlier in this post: the advantage of this system is, that nearly everybody can build at least something.

WordPress for Non-Coders

Yes, you can definately work with WordPress, even if you don’t have any coding skills. WordPress is not always a clean and enjoyable system for developers. But it is a system for everyone, no matter if you are a non-coder, a code-newbie, or a professional developer. So just try it out. And if you run into problems, you can ask Google or one of the thousands of WordPress-developers for help, and you will surely find an answer to nearly any kind of question …

Pricing

WordPress is an open source software and completely free. However, there is a big market around WordPress for plugins, services, and themes. Many of them are free, some of them are paid, and some follow a “fremium” business-modell: you get a basic version for free, but you have to pay for more advanced features.

Recommendation: When to use it?

You can build nearly everything with WordPress. And a lot of people actually do exactly that. But in my eyes, the best use cases for WordPress are news-driven concepts, like blogs, magazines, and news-websites, as well as medium-sized business websites.

WordPress is also a good choice if you want to start a simple project, that might grow into something more complex in the near future. For example, if you want to start a simple blog and add a shop in case of success, then the powerful flexibility of WordPress is probably a good bet.

But if you are planning a small project that will start simple and probably stay simple forever (a simple business website, a portfolio website, an one-pager, a landing page, or even a simple blog), then you should take into account that WordPress is probably overkill and the editing experience is quite complex.

In a big-enterprise-environment with complex requirements, WordPress should mainly be used as a blog-system (e.g. for a company-blog). I am pretty sure that you will run into some requirements issues and performance issues if you try to build a whole universe of complex websites for a global company with WordPress.

So you like PHP CMS for medium websites? Then you might also like these CMS: Craft, Drupal, TYPO3, WordPress,

Fact Sheet

Language:
Complexity:
Special-Features (Selection):
  • Custom fields: additional data-fields for each post/entry
Requirements:
  • PHP 5.2.4+ (PHP 7+ is recommended)
  • MySQL 5.0+ (MySQL 5.6+ is recommended) or MariaDB 10.0+
  • Apache mod_rewrite-module
  • HTTPS-Support (recommended)
Pricing:
  • Open Source
Licence:
  • GPLv2

Last reviewed: February 27, 2017

Leave a Reply

Your email address will not be published. Required fields are marked *