WordCamp Seattle 2016 Call for Speakers

We’ve opened the call for speakers for this year’s WordCamp Seattle. Give it a shot if you have any ideas, best practices, use cases, or stories you want to share with the community. I think people are often hesitant to put themselves out there, and that’s definitely understandable, but the WordPress community is really welcoming, and I think […]

Continue reading...

Regolith

I just finished the first version of a new WordPress installation template called Regolith. I’ve been using my personalized fork of Mark Jaquith’s WordPress Skeleton for the past several years, but recently came across Bedrock and really liked it. I started playing around with it, but quickly discovered that the tools and practices it embraced were a bit overkill for […]

Continue reading...

If WordPress Uploads Fail on a Dreamhost Shared Plan

TL;DR: DreamHost kills processes on their shared hosting plans if they run too long, which can screw up all kinds of things in non-obvious ways. To fix it, either disable lots of plugins, or upgrade to a better hosting plan. I spent too much time this week trying to track down this issue for a […]

Continue reading...

Generating Dynamic Placeholders for $wpdb->prepare()

$wpdb->prepare() is often called with each un-sanitized value explicitly passed as an individual argument; for example: $wpdb->prepare( "SELECT id FROM wp_posts WHERE id > %d AND `post_status` = %s", $min_id, $status ) The function will also accept an array of un-sanitized values, though, like this: $wpdb->prepare( "SELECT id FROM wp_posts WHERE id > %d AND […]

Continue reading...

Pagination UX Fails

Pagination is one of my biggest pet peeves, and Avoid the Pains of Pagination does a good job of explaining the primary reason: Users have better experiences with scrolling than clicking. The mouse wheels, touchpads and touchscreens of today make scrolling faster and easier than clicking. To get to the next page in a pagination, the user has […]

Continue reading...

Flushing Rewrite Rules on All Sites in a Multisite Network

TL;DR: Loop through all sites and delete_option( 'rewrite_rules' ). Don’t call flush_rewrite_rules(). Full example. Every once in awhile I’ll run into a situation where something will break permalinks on all the sites in a WordPress Multisite network, like a plugin network-activation gone wrong. On a single site, it’s easy enough to fix by manually visiting Settings > […]

Continue reading...

Automatically Reloading Locally Modified CSS Files in the Browser

I’ve been looking for a good live CSS reloader and the Auto Reload extension for Firefox is the best one I’ve found. It doesn’t require any programs or services running outside of the browser, so it’s more self-contained, and doesn’t break when you proxy your outbound traffic or use remote sandboxes. You can use a regular expression for to […]

Continue reading...

Progressive Enhancement is Still Important

Jake Archibald makes a compelling case that progressive enhancement is still important, not because of users who’ve chosen to disable JavaScript, or because of outdated accessibility concerns, but because of graceful error handling and faster page rendering. He also dispels some myths, pointing out that building a progressively-enhanced application doesn’t have to require duplicating server-side logic and templating on the […]

Continue reading...