Quick Tip: DreamHost cron and WP-CLI

If you’re hosting your WordPress website on DreamHost, and use their cron system to offload your WordPress faux-cron for better reliability, be careful of what version of PHP you have in your code. I recently had an issue where my cron events weren’t firing, and after enabling email output, I ended up with something like this PHP […]

Blogging Anonymously

An interesting problem I came across recently was how to set up a WordPress blog with an anonymous user.  Now, a simple way would be to create a brand new user with fake information, but that’s too easy. After looking for some prior art, I found the Anonymizer plugin in the WordPress.org plugin repository.  Unfortunately, it’s […]

Logging Failed Redirects

WordPress has a built-in function called wp_safe_redirect().  This allows you to create redirects in code, but only to whitelisted domains (via the allowed_redirect_hosts filter). The downside to this is that you have to remember to whitelist the domains.  It’s easy to forget if you’re doing a lot of redirects, for instance with the WPCOM Legacy Redirector […]

Purging All The Caches!

One of the best ways to ensure that a WordPress site–well any site really–stays performant and not broken is by leveraging caching. WordPress by default doesn’t do much caching other than some in-memory caching of objects, and the odd database caching via the Transients API. This site currently has three layers of caching: PHP OPcache […]

Disabling WordPress Faux Cron

The WordPress WP-Cron system is a decently okay faux cron system, but it has its problems, such as running on frontend requests and not running if no requests are coming through. WP-Cron works by: on every page load, a list of scheduled tasks is checked to see what needs to be run. Any tasks scheduled […]

Quick Tip: Force Enable Auto-Updates in WordPress

I know that auto-updates are a bit of a (#wpdrama) touchy subject, but I believe in them. In an mu-plugin I enable all auto-updates like so: <?php // Turn on auto-updates for everything if ( ! defined( ‘IS_PRESSABLE’ ) || ! IS_PRESSABLE ) { add_filter( ‘allow_major_auto_core_updates’, ‘__return_true’ ); add_filter( ‘allow_minor_auto_core_updates’, ‘__return_true’ ); } add_filter( ‘auto_update_core’, ‘__return_true’ […]

Auto-enable WP_DEBUG with a cookie

One of the most important things to do when working on new themes, plugins, or debugging issues in WordPress is to turn on WP_DEBUG.  According to the Codex: WP_DEBUG is a PHP constant (a permanent global variable) that can be used to trigger the “debug” mode throughout WordPress. It is assumed to be false by […]

Gutenberg, Code, and Highlighting

One of the great things about Gutenberg is the ability to compartmentalize different types of content within blocks.  One of the blocks that I’ve been using a lot of recently is the code block.  This block by default will render something like this: While this is acceptable, it’s not very pretty.  I used to use […]

Securing WordPress Plugins with more Plugins

I’ve written before about disabling plugin deactivation in WordPress, but I’ve finally used that knowledge in practice–on this site. The Problem Let’s say you’re going along your day, developing things, and fixing things, and making the world a better place when all of a sudden you get a call from a client that their website […]

CSS & JS Concatenation in WordPress

At WordPress.com VIP one of the features we have on our platform is automated concatenation of Javascript and CSS files when registered through the core WordPress wp_enqueue__*() functions. We do this using the nginx-http-concat plugin: https://github.com/Automattic/nginx-http-concat This plugin was written to work with nginx, but the server running derrick.blog is Apache.  I’ve worked around this and have nginx-http-concat running fully […]

%d bloggers like this: