In WordPress 5.1, a handful of small developer-focused changes were made that deserve to be called out. Let’s take a look!
File Path Value For WP_DEBUG_LOG
WP_DEBUG_LOG is a constant that tells WordPress to enable or disable error logging. Its default value is
false (no error logging). But, if it’s defined as
1) in the
wp-config.php file, site errors will be logged in the
Starting in WordPress 5.1,
WP_DEBUG_LOG will also accept a file path as a value allowing a custom error log to be defined. For example:
define( 'WP_DEBUG_LOG', '/srv/path/to/custom/log/location/errors.log' );
Here are a few things to keep in mind:
- The directory must already exist and be writable by the web server’s user.
- The file does not need to exist. It will be created once the first error occurs as long as the previous condition is met.
Reminder: Any values set to
WP_DEBUG_DISPLAY will be ignored unless
WP_DEBUG is set to
For more information, see #18391.
Test Suite: New Test Config File Constant
When running PHPUnit tests, the WordPress test suite requires a
wp-tests-config.php file to be present in order to run correctly. This file provides information similar to that provided by the
wp-config.php file. This includes database information, site domain and title, etc. (see the
wp-tests-config-sample.php file for more information). However, the test suite bootstrap file requires this file to be in one of two locations: the test directory (
tests/phpunit), or the root of the develop repository.
Starting in WordPress 5.1, the
WP_TESTS_CONFIG_FILE_PATH constant can now be added to the
phpunit.xml configuration file to define a custom location for the
<const name="WP_TESTS_CONFIG_FILE_PATH" value="/path/to/wp-tests-config.php" />
For more information, see #39734.
New Plugin A plugin is a piece of software containing a group of functions that can be added to a WordPress website. They can extend functionality or add new features to your WordPress websites. WordPress plugins are written in the PHP programming language and integrate seamlessly with WordPress. These can be free in the WordPress.org Plugin Directory https://wordpress.org/plugins/ or can be cost-based plugin from a third-party Action Hooks In WordPress theme and development, hooks are functions that can be applied to an action or a Filter in WordPress. Actions are functions performed when a certain event occurs in WordPress. Filters allow you to modify certain functions. Arguments used to hook both filters and actions look the same.
In WordPress Core Core is the set of software required to run WordPress. The Core Development Team builds WordPress. today, the
mu_plugins_loaded action hooks exist, but these hooks are only run after all plugins of their respective types have been loaded. There is no easy way to execute arbitrary code between each plugin being loaded or only after plugin X is loaded.
This makes it difficult for developers to conduct performance monitoring and debugging during this stage of the loading process. In WordPress 5.1, the following action hooks will be added:
These hooks will fire after every plugin is loaded. Each action hook will pass one argument, the full path of the main plugin file.
Because these hooks are fired after every individual plugin is loaded, they are not recommended as a replacement for
plugins_loaded. Using them in this manner will cause issues with performance.
For more information, see #41346.
Short Circuit Filter Filters are one of the two types of Hooks https://codex.wordpress.org/Plugin_API/Hooks. They provide a way for functions to modify data of other functions. They are the counterpart to Actions. Unlike Actions, filters are meant to work in an isolated manner, and should never have side effects such as affecting global variables and output. for wp_unique_post_slug()
When a post is created or updated,
wp_unique_post_slug() is used to ensure that the post slug (
post_name field) is unique to that post. By default, the function will add a numeric suffix to the desired
post_name value and increment until a unique value is created (
In some scenarios (when post titles are the same and no
post_name values are provided, for example), this can result in a performance bottleneck because a new query is performed every time the suffix is incremented until a unique value is created.
To help with this scenario, the
filter has been added in WordPress 5.1. If a non-null value is returned, the function will return that value and skip the default logic in the function. The new filter also opens the door for a handful of other use cases, such as always replacing certain terms in post names (changing
wordpress, for example).
For more information, see #21112.
Additional Developer Goodies
(which returns a list of functions called to get to the current point in the code) will now correctly capture hook names for
apply_filters_ref_array() calls (see #43488). Previously, only
apply_filters() were captured.
$wpdb->queries logs the elapsed time for each query but lacks the starting time. This has been added in 5.1 (see #43315).
WP_Error class now has a
has_errors() method, which returns a boolean value indicating if an instance contains errors. This adds consistency to code that has previously checked for errors in a variety of ways, such as
if ( $error->get_error_code() ) and
if ( empty( $error->errors ) ) (see #42742).
- A large number of inline documentation updates have been made to ensure accuracy proper formatting.