Two weeks ago, I noted that I was preparing to switch from PHP 7.0 to 7.1. It took me a bit more time than expected, thanks to a segmentation fault that appeared in 7.1 when using OPcache.
open_basedir is one way I isolate the various PHP applications running on my VPS. Within the directory that holds this WordPress install, there exists a symlink from when I relocated my presentation slides from https://ethitter.com/slides/ to https://slides.ethitter.com/. VaultPress doesn’t particularly appreciate this:
PHP Warning: file_exists(): open_basedir restriction in effect. File(/.../network/public_html/slides) is not within the allowed path(s).
Letting VaultPress access the directory that the symlink points to would defeat the purpose of using
open_basedir, so instead, my VPS continually frustrates VaultPress.
This morning, I delivered an extended version of this talk, which I first presented at WordCamp Winnipeg 2015. This session explored WordPress functionality that new developers often overlook, as well as some “gotchas” about Core behavior. As a 90-minute workshop, extensive discussion was encouraged, and successful–so much so that I only made it about halfway through the slides. But, as I said at the outset, the slides were more a suggestion to guide the discussion.
Someone asked recently why I use an editorial calendar for this site, with its low volume and single author. The reason is simple, and slightly amusing: to avoid publishing too frequently.
I’ve tried blogging challenges, and I’ve worked to post daily and maintain a streak as awarded through WordPress.com notifications.
I also found that the streak induced substantial stress to post daily, even when I had nothing worthwhile to share. Thanks to Edit Flow‘s calendar, I ensure that I post on no more than two consecutive days, as a defense against needing to publish daily.
Laugh if you want to, but this strategy’s enabled me to publish regularly since December 2015. Previously, one post per quarter was my about average.
Paginate the page you’ve set in WordPress as your static homepage, and pagination links use the standard
/page/%pagenum%/ format. 🎉
I had some time recently, and the idea struck me, so I put together a basic plugin that redirects
/latest/ to my site’s latest post. Try it out:
The plugin is ready for latest to be translated, but more importantly, it adds a field to your site’s
Permalinks screen where you can set the slug.
Strangely, I couldn’t find a Core ticket for such a feature, and nothing turned up in the plugins repository, either.
As part of today’s admin track at WordCamp San Diego, I delivered a talk titled “Getting Started with SSL.” My intent was to demystify the terminology and process involved with securely delivering traffic. I described my talk this way:
Revelations like Edward Snowden’s about NSA spying, and Google’s announcement that it will begin considering a site’s HTTPS status in its rankings, led to a lot of talk about moving websites to secure connections. Similarly, the rise in ecommerce, and the simplicity with which one can accept payments online, has increased the need for sites to be available securely. With so much terminology that’s likely new, often very similar, and rarely more than a stream of initialisms, this entire discussion can be very intimidating. I’ll clarify basic terminology, offer some reasons why it’s worthwhile to secure a site whenever possible, and share several solutions to cover everything from simple to enterprise needs.
While securing a site can be intimidating at first, the recent introduction of Let’s Encrypt (https://letsencrypt.org/) significantly simplifies the process for most sites. Many hosts have introduced support for this service, which I’ll discuss before delving into options for sites and circumstances that aren’t suited to Let’s Encrypt.
There are too many Google Analytics plugins in the WordPress.org repository. By my count, there are 900:
When there are 900 results for "Google Analytics" in the official repository, it's safe to say we've failed all but the advanced user.— Erick Hitter (@ethitter) April 14, 2016
When one of these plugins recently changed ownership and rebranded in a poorly-promoted way, I began looking for a new solution. Frustrated by both the volume of related plugins in the official repository, and their unending lists of features that I didn’t need, I did what many perturbed developers would: I wrote a custom solution.