WordPress is a complex Content Management System (CMS) that looks to provide a smooth User Experience (UX) on the front- and back-ends. Given this, you’ll also find a way to manage the core elements of the platform that’s as complicated as editing a file. The wp-config.php file lets you alter some of the key aspects of WordPress, without the need for heavy code.
However, using the file isn’t a simple proposition. You’ll need to have a good understanding of what each section achieves, and how the code snippets within link to your installation. While WordPress is a sturdy solution, you can bring your entire site down in one fell swoop even with one missing character.
For this post, we’re going to show you how to navigate the wp-config.php file like a pro. By the end, you’ll know what the file, where to find it, and what you can do with it. We’ll even throw in some advanced use cases, to help you tailor your platform to your own unique requirements.
If you take the file’s name as a literal definition, you’ll understand that it’s a WordPress configuration file. It lets you manage and change almost all of the base configuration settings for your installation. The wp-config.php file is one of the most important – if not the most crucial – of all of your WordPress files. This helps you WordPress site talk to its database, so it’s standing shouldn’t be something you under-appreciate.
There are a number of moving parts for your WordPress installation. Of course, you have the platform and its files. These let you display pages, provide template layouts for each element of your site, and host your plugins, themes, and media.
However, your site ties all of these together using a database. In order for the database to talk to the rest of your site’s files, you’ll need to configure WordPress. The wp-config.php file is the answer.
At a core level, you’ll manage your database settings within the file, and never need to look at it again. However, under the hood, WordPress will always refer to the file, and may also add more snippets on behalf of other plugins. For example, caching plugins will sometimes add a few lines to the configuration file, as it will need to access the database.
In general, the wp-config.php file is a ‘lookup table’ of sorts for WordPress. when it needs to access the database, it will make a request from this file to open it. As such, you need to make sure you understand the different elements within.
When you first download WordPress, the wp-config.php file doesn’t come in the package. Instead, you’ll find the wp-config-sample.php file. You can use this to create a top-level configuration file, although the order of the sections within will be specific. Here’s what the file will look like:
<?php
define( 'DB_NAME', 'database_name_here' );
define( 'DB_USER', 'username_here' );
define( 'DB_PASSWORD', 'password_here' );
define( 'DB_HOST', 'localhost' );
define( 'DB_CHARSET', 'utf8' );
define( 'DB_COLLATE', '' );
define( 'AUTH_KEY', 'put your unique phrase here' );
define( 'SECURE_AUTH_KEY', 'put your unique phrase here' );
define( 'LOGGED_IN_KEY', 'put your unique phrase here' );
define( 'NONCE_KEY', 'put your unique phrase here' );
define( 'AUTH_SALT', 'put your unique phrase here' );
define( 'SECURE_AUTH_SALT', 'put your unique phrase here' );
define( 'LOGGED_IN_SALT', 'put your unique phrase here' );
define( 'NONCE_SALT', 'put your unique phrase here' );
$table_prefix = 'wp_';
define( 'WP_DEBUG', false );
/* Add any custom values between this line and the "stop editing" line. */
/* That's all, stop editing! Happy publishing. */
if ( ! defined( 'ABSPATH' ) ) {
define( 'ABSPATH', __DIR__ . '/' );
}
require_once ABSPATH . 'wp-settings.php';
This is an abridged version of the file, as you’ll also see lots of comments to help you understand each element. In a nutshell, you have the following in order:
While your install process will depend on how much you edit this file, there will be at least one occasion that you’ll need to open it up to change or check the contents. To do this, you’ll need a couple of tools.
If you read the WPKube blog often, you’ll know that we cover a number of ways to resolve errors on your system. In lots of cases, you’ll need two elements to read the files within WordPress:
Once you have these elements in place, you can use SFTP to access your server. The wp-config.php file will be in the root directory, along with your other WordPress files and folders:
Once you open the file, you can begin to edit it. However, we also recommend you create a backup of your site in case your need to restore it again.
We’re going to show you a few typical ways to work with the wp-config.php file. Note that we don’t suggest you carry out all of these processes and methods as part of this article – it’s more for illustration.
Instead, consider this a glossary of sorts for regular actions you’ll take that involves the file. Here’s what we’re going to cover:
After, we’re going to give you a rundown of other popular ways site owners and developers use the wp-config.php file. This will give you some idea of its power and flexibility.
The natural task to carry out with the wp-config.php file is to set your database credentials. The configuration needs four elements to make a successful connection:
In most cases, you’ll find these within your hosting control panel. If you install WordPress through an auto-installer, it could be that these fields populate with the correct information on your behalf.
Because of this, you might not need to touch these fields. However, if you encounter an issue such as the Error Establishing Database Connection, this will need you to check over the credentials to ensure you have the right ones.
This is another aspect of your wp-config.php file that WordPress fills in for you once the installation is live. It’s a way to encrypt cookie data for your site’s visitors. If the salts don’t authenticate, a user won’t be able to use the site. As such, they are essential for protecting users, creating sessions, and handling cookies.
There are eight elements here, split into two sections of four. One set of four handles keys, and the other handles salts. Each split offers the following:
For the purposes of using this section of your file, this is all you need to know. However, each key and salt uses a random string of characters. In fact, WordPress provides an Application Programming Interface (API) to help you generate these salts. Because they generate without your input in most cases, there’s often no need to alter them within the file itself.
This task is something you can do through the wp-config.php file, but often has a dedicated option through your chosen install process. Altering the database prefix can help you site’s security, although there is contrasting option about whether this provides any benefit.
Even so, you can change the $table_prefix = 'wp_';
to replace “wp
” with any random characters. However, this isn’t all you need to do, and our advice is to change the prefix through your host upon setup. We’d even go as far as saying you don’t need to change the prefix at all if you’re unsure.
We talk about the database table prefix a little more in our post on SQL queries. That article gives you a couple of examples of how you’d use this line in your wp-config.php file to reference other aspects of your installation, so it’s essential reading.
One of the starting points for many error fixes is to turn on the WordPress debug mode. This activates error reporting for some errors, and stops you seeing the dreaded White Screen of Death (WSoD).
define( 'WP_DEBUG', false );
By default, debugging is off, and to enable it you’ll turn false
to true
. Once you do, there will be some other options available to you, namely turning on the debug log file using define( 'WP_DEBUG_LOG', true );
. There are other ways to customize the output further too. For example, you can choose to show errors within the HTML of your pages using define( 'WP_DEBUG_DISPLAY', true );
.
This parses the PHP errors you’ll see on the WordPress back end, and if you change the value to false
, you won’t see them. You’ll want to create the right blend of debug settings using the various modes and states to create the right debugging environment.
There are lots of other ways to configure your WordPress installation through the wp-config.php file. Developers and site owners will carry out these methods to customize WordPress further, and provide a better ‘quality of life’ for end users.
As with the typical ways above, there’s no expectation that you should carry these out – they’re on a ‘need to know’ basis. As such, when you do need to know them, you have the means to implement them with your own configuration files.
There are some errors, namely Fatal Error Allowed Memory Size Exhausted, that reach the maximum amount of PHP memory a server allocates. This is different depending on your hosting provider, but you can change it using a snippet in the wp-config.php file:
define( 'WP_MEMORY_LIMIT', 'xxM' );
Here, the “xx
” is a number, often a multiple of two (such as 96, 128, or 256). This should be all you need to do in order to resolve those sorts of errors.
You can also manage automatic WordPress updates using a few lines of code:
define( 'AUTOMATIC_UPDATER_DISABLED', true );
define( 'WP_AUTO_UPDATE_CORE', false );
The first disables all automatic updates, while the second handles core updates only depending on the setting you use. As you might expect, false disables all automatic core updates, while true enables them all for both major and minor versions. However, the default is minor, which doesn’t carry out automatic major updates,but applies for everything else.
You can choose to customize post revision states too. For example, the default is define( 'WP_POST_REVISIONS', true );
. However, false turns the feature off altogether. You can also specify a number here, which sets a maximum number of revisions per post.
A related function is the WordPress autosave interval. This can be a godsend if you rely on the functionality, and you can change the 60-second default into something else using define( 'AUTOSAVE_INTERVAL', xx );
. Here, “xx
” represents the number of seconds between saves.
Finally, you may want to set a different default theme. Each site owner will have a preferred default theme, especially if you often switch back to it and don’t use a custom install file (for example, in Varying Vagrant Vagrants).
Again, you only need one line for this:
define('WP_DEFAULT_THEME', 'twentyeleven');
However, note that the theme you specify should come as part of your WordPress installation, and the value you provide has to be the theme’s slug. You can find this within the wp-content/themes folder, as the slug will be the name of the directory of the default theme.
For a file that’s mere kilobytes in size, the WordPress wp-config.php file is a beast. It helps your database talk to WordPress, and is a vital file for your installation. As such, you should learn the ins and outs of the file, because you may need to open it up at some point.
If you have a text editor and SFTP access to your server, you can find your wp-config.php at the root level and work with it to manage your database settings. You can also carry out advanced alterations such as setting memory limits. As such, it’s a versatile way to adapt your WordPress installation to your needs.
Does this article help you understand the wp-config.php file more, and do you have any further questions? Ask away in the comments section below!
SeedProd is one of the elders of the WordPress ecosystem. It's also a bit of…
Really Simple Syndication (RSS) feeds are a vital component of the WordPress ecosystem. They act…
It’s that time of year again when people start revving up their shopping lists, hunting…
Forget music being the food of love, WordPress has a love for food. You can…
If you clicked on this post, I’m guessing you want to find the best solution…
Trying to figure out how to start an online course so that you can share…