Lance Cleveland

WordPress Plugin Loader Tricks

An unusually short article, for me, on basic WordPress plugin loader tricks.

Basic setup

Name the “loader” php file the same as the plugin directory.

Text Domain must match the directory name.

Avoid leading * on header lines = less bytes to process by the header processor in WordPress.

Ensure it runs from within WordPress

Use function_exists( ‘add_action’ ) instead of defined( ‘ABSPATH’).  It is more likely to be specific to WordPress.   It is also a better test as the loader calls the add_action function and will break if it is AWOL.

Not doing heartbeat processing

Short circuit to avoid loading the main plugin code if your plugin has zero influence on heartbeat operations.    WordPress heartbeats fire up AJAX requests every minute or two when a user is on the site.

Load on plugins_loaded

The plugins_loaded action loads early enough to be able to latch onto actions that have to happen in init or admin_menu. If your plugin requires others to be loaded this ensures that has happened, just make sure you set the action priority higher than the plugin you rely.
Read More

Automated Web App Testing With phpStorm

Selenium IDE was a great way to handle automated web app testing like the Store Locator Plus plugins for WordPress.    Selenium IDE is a simple script recorder and playback too that runs on Firefox.    Or, I should say, it used to run on Firefox.  That broke in 2017 when Firefox 52 came out.

After a lot of research I finally found a viable alternative to Selenium IDE that will work with modern browsers.  It is also free, locally installed, and open source. All winning attributes.  Paying for services is not much of an issue so the free part is not a requirement just a “that’s nice” feature.

Web app testing services

I tried several paid alternatives including Browserstack — a paid monthly service that runs virtual desktops and mobile device simulations hosting various browsers. Having to connect to a remote server via proxies or tunnels is a pain.    It also means no testing when offline or when the network is unreliable.    Having multiple browsers is great but 90% of the testing that needs to happen is base functionality which is the same across browsers.    Modern browser are also very good at testing mobile with browser like Safari going beyond simple screen sizing in their mimic of IOS, for example.

Other alternatives included several locally installed proprietary test frameworks.   Nearly every one of them ranges from mediocre to downright horrid.    This is clearly an industry stuck in the 1990s mindset of application development — from the start where you have to fill out a form with all your contact info to be “allowed” to demo the product (and be later harassed by sales people) to the 1980s desktop-centric interfaces.    Many did not work on MacOS.   Those that worked were heavy, bloated, and had a steep learning curve.    Does nobody integrate with my phpStorm, my web app IDE?

It just so happens that the best local testing suite today happens to be free.

The winner?   Selenium Webdriver with a few libraries like WebDriverIO + Mocha + Chai to make things easy.
Read More

The Inner Workings of Jetpack

I have multiple sites using Jetpack services at various levels from the Free through the Premium service.    Some sites are playing nicely with the Jetpack services at WordPress.com but not all sites.  This post is my notes repository for debugging this issue.
Read More

WordPress wp_update_plugins Deep Dive

When using a private update service for premium WordPress plugins, some version tests get left behind leaving users with a half-updated plugin stack.   When operating a freemium model, like Store Locator Plus, where the free base plugin may be updated and impact how the premium add ons work having all update notifications arrive at once is critical.     There are times when version 3 of the main plugin will ONLY work with version 2 of a premium add on.    Within Store Locator Plus there are “pre-flight” checks built into both the base plugin and the premium add ons to ensure the entire WordPress site stays running if there is a conflict.
Read More

Tesla Slacker Radio Is Half-Baked

As a tech geek I’m interested in the tech in my Model S.   I also am frustrated with the horribly outdated browser and the half-ass integration of my Premium Slacker Radio account with the in-dash Slacker interface.  I love both products but Slacker has been doing half-baked secondary features for years now.  Tesla got the media interface “good enough for most people”.  In the end Tesla Slacker Radio suffers.

I’m not “most people” especially when it comes to my streaming audio. I want more.  I’d like to see all my custom stations when I login to my Premium Slacker account in my Tesla.    If Slacker didn’t halfway drop the Favorites feature, the icon now appears on the IOS app but does nothing I could use that.   According to Slacker the “Favorites” feature to mark any station as a favorite is being dropped.  Tesla disagrees as it is a primary feature when bringing up Slacker stations on their interface.

I can create a custom Slacker Station and get it on my Sonos, through Alexa, and on my mobile apps.  I CANNOT get it in my Tesla.    I can mark Slacker stations as favorite in my Tesla, and they can be set to be “front and center” on the media app, but I cannot get to them anywhere else.    In short custom stations are completely off the radar when it comes to accessing them from the Model S.
Read More

%d bloggers like this: