Skip to main content

Senior Web Engineer. Open web / music. Remote DJ. Tall Dutch guy.

twitter.com/svandragt

github.com/svandragt

mixcloud.com/cloudseer

I’ve switched all my personal experiments to Chassis this morning. I like the concept of plugins on a local dev setup. https://docs.chassis.io/en/latest/

ACF field groups with the same option position can be ordered by setting a key value. Key values starting with underscores are shown first. Field groups without keys are displayed inconsistently depending on the user role.

WordPress Canonical URLs for Category/PostName Permalinks

1 min read

When the permalink format is set to %category%/%postname%/ then a post is available under category/postname links for all categories, as well as under all parent/child/postname links.

If you use Yoast SEO and have set a primary category, that  becomes the canonical URL that's used for SEO. If you don't then the postname for whatever category has a lower ID (was created first) becomes the canonical URL.

What is the meaning of a site's Last Updated property?

2 min read

When running a WordPress multisite, in the site directory each site has a Last Updated property. I previously incorrectly assumed this reflected  when the site's metadata changed, for example the site's attributes. However, archiving and deactivating a site does not change the Last Updated value, so what does it do in WordPress 5.2.1?

As usual the best place to look is the WordPress codebase. It turns out that, on a multisite, this value is updated whenever a post is updated or deleted. It reflects the last content update, not the site's metadata.

By inspecting the html and looking up the property name, we find that the function that updates this is called wpmu_update_blogs_date and there is an action hook wpmu_blog_updated that receives the site_id variable. This function can be called whenever we want to update the value. It isn't used anywhere else.

If we're looking to update this date whenever the site's status changes, then via the same process it appears that he actions to hook into site attribute updates are in wp_maybe_transition_site_statuses_on_update so one could write a quick mu-plugin that updates the Last Updated property whenever these fire.

TIL (thanks Ali) the escape functions finish up by applying a filter to the safe output, making them unsafe again.

The WordPress community is very excited about raising the minimum PHP version to one that's longer supported. ;-)

Hide Trackbacks 1.1.3

1 min read

Hide Trackbacks is a WordPress plugin that hides pingbacks and trackbacks from your website comments.

I’ve updated the plugin to indicate it works correctly with WordPress 4.9.9 and earlier. It's now also up to PHP 7.2 compatible, and has a number of small fixes to improve code legibility and alignment with the WordPress Coding Standards.

Transitioning to Gutenberg

1 min read

The WordPress Project says:

The Classic Editor plugin will be officially supported until December 31, 2021.

[...]

Since the Classic Editor plugin is central in this transition, we are considering including it with upgrades to WordPress 5.0.

In the context of my professional work with WordPress it would be beneficial to see the Classic Editor plugin be included by default into the installation package. This would signal to plugin and theme developers that we are in a transition phase but supporting the existing installations, until Gutenberg is more fully accepted by the wider community. Not doing do could put pressure on smaller developers to just test their updates for Gutenberg only, resulting in a lot of broken sites or a security nightmare where people won’t be able to update to the latet versions of WordPress or their plugins until the teams and processes are ready.

Hide Trackbacks 1.1.1

1 min read

Hide Trackbacks is a WordPress plugin that hides pingbacks and trackbacks from your website comments.

I've updated the plugin to indicate it works correctly with WordPress 4.9 and earlier.

Embedding a ted.com video by pasting the URL into a WordPress post means the whole video loads (33mb!) on pageload! Great videos, bad service.<p>#status </p>