Better Error Handler for WordPress Debugging

As a theme or plugin developer, WordPress debugging may be a pain as some errors may not be specific, especially if you have a giant class->function call stack. With this simple WordPress Error Handler script, you can view the call stack of the errors you get.

Overview

  1. Create wp-error-handler.php file in your wp-content/mu-plugins directory.
  2. Copy the contents as provided in the source code below.
  3. Setup WP_DEBUGWP_DEBUG_DISPLAY, or WP_DEBUG_LOG in wp_config.php to true.

Setting it Up

Below is the code provided you need to set up. In your wp-content/mu-plugins directory create a file wp-error-handler.php. WordPress will automatically load the file as it is a Must Use Plugin. You may read more about must use plugins here.

You have to define the constant WP_DEBUG as true to enable the error handler. To display errors on your web browser, set WP_DEBUG_DISPLAY as true.

You also have the choice to write the errors to the WordPress’s debug log file (/wp-content/debug.log) by enabling WP_DEBUG_LOG constant.

In an event of an error, a message similar to the screenshot below will be displayed.

Example Screenshot

Image Taken at Suzhou, Jiangsu, China, edited with Prisma AI.

PHP Combine Path

PHP Combine Path is a simple function I created that is roughly equivalent to Microsoft .NET’s Path.Combine method. This function combines two strings into a path. However, this only handles when to place path separators in between the two strings given, whether given string is a valid path or not.

It works by trimming off separator characters on the left side of $path1 and the right side of $path2, which is then concatenated as $path1, the directory separator character, and $path2. The function also works with URLs.

<?php
if (!function_exists('str_combinepath')){
/**
 * Combines two strings into a path.
 * @param string $path1 : The first path to combine.
 * @param string $path2 : The second path to combine.
 * @param string $separator : (Optional) The directory separator. Default: OS specified.
 */
function str_combinepath($path1, $path2, $separator = DIRECTORY_SEPARATOR){
	$path1 = rtrim($path1, $separator);
	$path2 = ltrim($path2, $separator);
	return $path1 . $separator . $path2;
}
}

Examples

<?php
str_combinepath ('/home', 'usr/');
// Result: '/home/usr/'

str_combinepath ('/home/', 'usr/');
// Result: '/home/usr/'

str_combinepath ('c:\temp', 'subdir\file.txt', '\\');
// Result: 'C:\temp\subdir\file.txt'

// Also works for URL's
str_combinepath ('https://www.earlpeter.com', 'wp-admin', '/');
// Result: https://www.earlpeter.com/wp-admin

You can see more of my PHP gists here.


Image Taken at Suzhou, Jiangsu, China, edited with Prisma AI.