When it comes to working with URLs, I believe that we should often be using
trailingslashit in WordPress.
This is post is part of a larger discussion that I’ll be covering in more detail in another post, but here’s the gist of why I’m a fan of using
Here’s why: there’s only a handful of operations that you can really be doing:
- Setting up some type of rewrite rules or routes
- Sniffing out parts of the URL to check for data
- Redirecting (or protecting) users from content based on their status
- …and maybe a few more
When it comes to examining the contents of the URL, one of the most common – if not the most common – way of doing it is using
explode and then examine the various indexes of the array.
But in order to properly handle this, I think that we have an obligation to code defensively against URLs because we never know how users, third party libraries, or other clients are going to provide said URL.
And thus the case for always using
trailingslashit in WordPress projects.
trailingslashit in WordPress
trailingslashit will append a backslash to the end of a URL that’s passed as its parameter. If one already exists, then it won’t duplicate the existing trailing slash.
But the reasons for doing this aren’t arbitrary – it makes managing, parsing, and examining URL’s much easier, and here’s why:
Whenever you implement a trailing slash at the end of a URL, you are giving a definitive end point to your URL such that calling
explode on a URL will allow you to have a fixed set of array indexes that contain each component.
Without having a trailing slash, you may end up running into an undefined index. Antonio offers a second opinion, which is completely viable, and which I’ll be discussing in the next post, too.
Consider this: Let’s say that you’re expecting a value to be at the last index of the array. If the trailing slash is present, then the value at the end of the array will always be two-off from the end; otherwise, it will be one-off from the end.
If the input is variable, then there’s no way to know which index to check. By applying
trailingslashit, you can ensure the value for which you’re looking is always at the same index.
$arr_example = explode( '/', trailingslashit( $url ) ); $value = $arr_example[ count( $arr_example ) - 2 ];
trailingslashit, you have no way of knowing if this index will actually exist at the end of the array or one index away from the end of the array, whereas using it will prevent that very problem from occurring.
Although there are multiple applications for this function, this is a safe guard when it comes to inspecting the last component of a URL.
That said, this isn’t the definitive way to go about handling trailing slashes. It’s a good way, but there’s another use case to consider. Thanks to thoughts by several commenters, I’ll be covering the flip side of this in the next post.