Data, Maps, Usability, and Performance

API canvas d3 data geo GeoJSON html5 image JavaScript json maps mysql PHP WordPress

Managing and Displaying New Fields for WordPress Users

how to add new attributes to wordpress users

WordPress provides a lot of different hooks that allow you to expand on user management capabilities. You can easily add a new field or attribute for any user and make it editable in the user profile. You can restrict the edit mode to only Administrators and you can visualize any of these new user data points in the main Admin Users table.

So, today, I will write a quick WP Plugin that adds a new user field called credits to all users, which can be updated by Admins in the user profile. The WordPress plugin will also display that field in the Users table along with a new read only field that captures users last login date and time.
Read more

WordPress Plugin with Background Process, Queue, and Debugging

background processing sample WP plugin for async tasks

WordPress Plugins are often used to run a large process in the background like importing, exporting, bringing data from other APIs, pushing data out, and other tasks that should run asynchronously. How do you do that? TechCrunch came out with wp-async-task and WP Background Processing extended that by adding the ability to queue tasks. The author already included a good sample plugin and article but I wanted to see if I can write a more basic example. So, today, I will create a WordPress plugin that uses WP Background Process to queue and run PHP tasks in the background.
Read more

How to insert or update multiple items in MySQL and WordPress?

replace into versus insert on duplicate key update

You have a table with some data, lets say it is user information with emails, names, ages, etc. Now you need to insert 10 more rows of data but you don’t know if the 10 new rows are for new users or if they are attributes for users you already have in the database. This is a very common scenario where you need to figure out if you should update or insert.
Read more

How to Convert a Bookmarklet to a Chrome Extension

Converting Bookmarklet to Chrome Extension

Bookmarklets, or the ability to execute your own JavaScript code on any page, allows you to customize your browsing experience in many ways. A while ago I wrote some JS code that would simply remove all content from any page and only show images with zoom on click functionality. It works well as a bookmarklet but I wanted to see how easy it is to package this into a Chrome Extension. I am doing this for fun but there are some strong reasons like access to cross domain resources, access to network requests, and ability to share with others via the Chrome Store.

Here are some simple steps that show how to convert JavaScript code into a Chrome Extension
Read more

Using MAX and CASE to pivot MySQL data stored in EAV Model

EAV to relational model pivot with mysql query

Last week, I covered pivoting tabular data in JavaScript. But, often times, data is not stored like a CSV or excel sheet in a database. When flexibility is needed to cover potential future changes, like adding many new columns or removing old ones, we often see the EAV model being used to store data.

Consider the previous example of storing car data in rows with columns: id, make, color, and age. If you are just adding more rows, this works well. But, if you will be adding an uncertain number of new columns in the future (model, size, etc), or removing columns, it might make sense to use the EAV model.
Read more

FastPivot – Process and Shift JSON data with JavaScript

FastPivot, pivot data with JavaScript

Imagine a table of data, perhaps car data with columns: ID, Model, Make, Color, Age, etc. How do you process this data so that you can answer some simple questions or visualize it with JavaScript charts? Some questions, like “how many cars are red?” can be processed by looking at a count of rows that meet your criteria (rows where column color is red).

Other questions, like “what is the distribution of colors in your data set?”, requires shifting or pivoting the data, as you want to evaluate a specific column instead of rows. Charting will often need this data pivot and doing it optimally is crucial if you are working with a large amount of data on the client side.
Read more

Repeatable Field Creation and Inline Edit with Fromidable Forms

Formidable Forms Repeatable Field PHP

Last year I wrote an article on Gravity Forms and now I want to follow up with something on Formidable Forms. Instead of doing a comparison between these two WordPress plugins, I will write about two problems that I have encountered with FormidableForms and explain how I have resolved them. The first one is based on the backend, PHP code that will create repeatable fields inside a form and the second one goes into the front end, JavaScript code that helps hooking into “in-place” edit.
Read more

Minimalist WordPress Theme

Professional and Minimalist WP Theme

I’m back and happy to announce a new WordPress theme that I have created called Minimalist which you can see on this blog. Why? Because almost all WordPress themes focus on nice design and flexibility while killing performance. It looks great on the cover but then you dig in and see a lot of garbage in the source code, ridiculous amounts of database calls, a large amount of files, and plugins needed for simple stuff. Most of it is not needed.

Minimalist is simple, fast, responsive, and SEO optimized WordPress theme that can be used out of the box or as a great starting point for WP theme development. I only tweaked a few things and applied it on this blog.

Read more

Page Performance in HTTP1 vs HTTP2

http1 versus http2

When I think about HTTP2, I think about web performance and page load times. There is a lot more to HTTP2 like server push but I am very curious about the impact on website speed. How do the webperf metrics change when a page is delivered with HTTP2 instead of HTTP1? Let’s check out a waterfall comparison via WebPageTest:
Read more

Editing Gravity Forms Entries on The Front-End

edit gravity forms on frontend

If you are using WordPress and the Gravity Forms plugin, you might want to allow users to edit their posts or entries on the front-end. This is not supported by the plugin but there are other plugins or addons like Gravity Forms Edit Entries, Gravity Forms Sticky List, Gravity Forms: Post Updates, and GravityView that provide such functionality. But, they also come with other features that you might not want or need and installing more and more plugins can certainly impact performance. Moreover, a few of the plugins that I have tried would create and delete entries in GravityFroms causing missing Entry IDs which isn’t ideal and it is additional work on the system. Today, I will show you how to edit Gravity Forms entries on a page by simply using GF actions, hooks, and the API.
Read more