Does Javascript guarantee object property order? No. Or… actually, not always
Category: Web Development
Registering custom URLs with custom templates in WordPress (without using page templates)
It’s fairly common to find yourself on a situation where you want to use a specific URL to show a custom content (perhaps something an archive page with two different custom post types), and think: “well, that’s easy. I’ll just create a page to register the URL and a custom page template where I’ll query… Continue reading Registering custom URLs with custom templates in WordPress (without using page templates)
When using a navigation menu on WordPress, you’ve probably seen the various HTML classes that are added on active elements, such as current-menu-item
, current-menu-parent
, current-menu-ancestor
…
While that kind of classes are fine if you must fully reflect the navigation hierarchy on the menu element, there are some times that you just need a more simple approach, such as just knowing when a certain menu element must look like the active item —for instance, when using Bootstrap.
For these kind of situations, you can use a simple filter to add such a class; something like:
<?php add_filter('nav_menu_css_class', function ($classes, $item, $args, $depth) { // filter by some condition... for instance, only on the "main" menu if ( $args->theme_location !== 'main' ) { return $classes; } // all the different "active" classes added by WordPress $active = [ 'current-menu-item', 'current-menu-parent', 'current-menu-ancestor', 'current_page_item' ]; // if anything matches, add the "active" class if ( array_intersect( $active, $classes ) ) { $classes[] = 'active'; } return $classes; }, 10, 4);
Why some apps use fake progress bars
Why some apps use fake progress bars — a brilliant example of how psychological factors influence design, trading efficiency and speed for trust.
Let’s talk about usernames
Usernames are a much, much harder problem than what you might think at first glance… even if you can get away with a really simple and naive implementation on a prototype, a large, global and secure service must consider lots of not-so-obvious details and possible attack vectors.
Let’s talk about usernames deals with the problem with uniqueness, homograph attacks, confusables and other security concerns that you might need to consider.
In Praise of Theory in Design Research: How Levi-Strauss Redefined Workflow
It is now well known that people use technology in unexpected ways (at least, in ways that software engineering and product teams had not intended) […] Our original charge was to find ways to improve and optimize users’ browser workflows following software and design-oriented assumptions. Instead, we saw that users were doing just fine with the tools they were already using.
In Praise of Theory in Design Research: How Levi-Strauss Redefined Workflow
Control HTTP 301 redirects caching
HTTP redirects should be your tool of choice when you’re reorganizing or renaming key sections of your site on order to keep visitors from hitting a not found page and make search engines update their location and keep their ranking. However, sometimes you might run into a situation when you need to update a redirect,… Continue reading Control HTTP 301 redirects caching
Hosted ElasticSearch (2017 edition)
ElasticSearch offers an excellent alternative when you need to implement a better alternative to MySQL FULLTEXT search, with nice features such as related results, facets, “did-you-mean” and many, many options to control exactly what you need to get from it. Unfortunately, as your data grows it also becomes harder to host on your own and… Continue reading Hosted ElasticSearch (2017 edition)
Simple, automated and low cost MySQL backup strategy
Setting up a mysql backup strategy it’s hardly an exciting task, so having a simple solution it’s key to actually get it out of your to-do list. Here’s a simple, automated and low-cost alternative that I use to keep MySQL database backups of small to medium-sized projects. Setting up automatic backups automysqlbackup it’s a simple… Continue reading Simple, automated and low cost MySQL backup strategy
When you’re developing a WordPress plugin, there are certain patterns and practices that are extremely useful to know and apply in order to get a better fit with the platform as a whole.
One of these things it’s what’s the better way to initialize a class on a plugin, which this answer on the WordPress StackExchange covers in great detail, while also explaining other interesting topics and recommendations such as using an autoloader and global access, registry and service locator patterns.
While you’re at it, you might also want to check these posts from Tom McFarlin:
- Properly writing WordPress plugin constructors, which basically explains why it’s better not to set action or filter hooks on a plugin constructor
- The right hook to initialize a WordPress plugin, about finding the correct hook (not too early, not too late) to initialize a plugin