Category: Web Dev Log

How to Create Sortable Checkboxes Option in Customizer

Customizer-Sortable-Checkboxes

WordPress Customizer is a very powerful. Not only because we have a live preview, but also because it got a lot of build-in input type. And we can also extend it or create our own reuse-able input type.

This is not a full tutorial but only explaining the concept, but you can check the full working code here:

This is a useful control, we can use it for various settings for example:

  • Reorder element, such as header, navigation menu, thumbnail, excerpt, etc.
  • Sharing buttons.
  • etc..

Read More How to Create Sortable Checkboxes Option in Customizer

How To Disable WP.org Theme Update Check

WP.org is not very good (read: evil) organization. They collect data without user consent, they are not transparent in what data they collecting, and they make it hard to disable this.

For example: There’s no easy way to exclude custom theme for update check. WordPress have filters for everything, but they don’t have this filterable. Maybe they want to monopolize theme market (maybe they are trying to say: you want to create theme? you need to use wp.org theme repository).

The only way to disable theme update check to wp.org repository is using this code (well, it’s pretty much a hack): Read More How To Disable WP.org Theme Update Check

How to Load Multiple Google Fonts in One URL Request

Loading google font is easy. If we visit Google Font page, for example Open Sans Font. we can see the instruction to add the font in our web page.

google-fonts-instruction
Google Fonts Instruction

If we need to load multiple font weight (for example 400 (normal) and 700 (bold), we can use this pattern in the URL Font+Name:400,700. For example:

//fonts.googleapis.com/css?family=Open+Sans:400,700

So font name is separated using + sign. and we can add multiple font weight/style using : after font name and add available font weight/style in comma , separated string,

I remove the http: part of the URL when loading it, so it will be HTTPS compatible, and using the right protocol when loading the font.

If we use more than one font, we can simply load it in separate request, for example we use Open Sans and Ubuntu Font.

<link href='//fonts.googleapis.com/css?family=Open+Sans:400italic,700italic,400,700' rel='stylesheet' type='text/css'>
<link href='//fonts.googleapis.com/css?family=Ubuntu:400,700,400italic,700italic' rel='stylesheet' type='text/css'>

Multiple Google Fonts in One URL

But of course we want to reduce the number of HTTP request. We can actually load multiple Google Fonts in one URL request like this: Read More How to Load Multiple Google Fonts in One URL Request

Building a Starter Theme

I love using Hybrid Core Framework, I use it in all my themes, I don’t even know how to build a theme without it. Currently Justin is working on the Version 3 of the Framework and it’s offer a lot of improvement and features.

I want to create my own.
nokonokoHybrid Core is modular and extendable so I can use only the features I need and bend it as I see fit, but I want to create my own framework so I can have full control of the features and code. For my themes I created “Tamatebako“, a Hybrid Core sidekick to build theme faster by setting the defaults. Now I want to experiment and make Tamatebako as a standalone framework.

The focus is a little different than Hybrid Core. Instead of building new awesome features, the focus is for faster theme development. I might failed and switch back to Hybrid Core, but I think it’s going to be a good opportunity to dive in and re-learn about theme development.

I haven’t even done porting main framework features (still a mess), but you can follow the development here.

48 Hours Theme Challenge

Explorer WordPress Theme

Explorer
A beautiful WordPress theme inspired by file explorer. I create this theme in 48 hours (well, actually 12.5 hours).

So, a few days ago Sami Keijonen create a challenge to build a WordPress Theme in 48 hours. He mention that he need several months to build a WordPress Theme.

Well, for myself, the challenge is not really hard. I usually build a theme in 2-4 days for simple custom theme. As long as the client already have a design (PSD/design inspiration/example) I can build it in less than a week.

I only charge $300 – $500 for a very simple theme. So, I need to work fast 🙂

Read More 48 Hours Theme Challenge

How to Test Your Code in Multiple PHP Version (only $10/year)

cpanel-select-php-verWordPress is a Global CMS, with very minimum requirement to install:
PHP: version 5.2.4
MySQL: version 5.0

I’m sure most of us have better server configuration than the minimum. I think most hosting have at least PHP 5.4 installed. but as a freelancer, sometimes we get a client with older version of PHP in their server. And for whatever reason they cannot/do not want to upgrade to better hosting.

If you don’t have multiple PHP version in your server, you can always install multiple PHP version in your server and pollute your server with outdated script.

Or you can spent $10 and have a separate server where you can test your code for whole year.

$10 / year, that’s only $ 0.83 / month Read More How to Test Your Code in Multiple PHP Version (only $10/year)

How to Sanitize Image Upload?

Today I updated my plugin f(x) Favicon (no longer available, WordPress now have “Site Icon” feature), and I would like to share in how I sanitize image URL in the plugin uploader.

favicon-settingsWhy sanitize image upload?
Basically what we need is to make sure that the input is an image URL. So, we don’t want user to input other file such as document file, video file, mp3 file, etc.

And this is to make sure our plugin/theme working correctly. We also need to do this check before loading the file.

Wanted result:

<link rel="shortcut icon" href="http://siteurl.com/path/favicon.png"/>

Unwanted Result:

<link rel="shortcut icon" href="http://siteurl.com/path/some-random-file.doc"/>

Read More How to Sanitize Image Upload?

How to use $this in Anonymous Function in PHP 5.3

Yesterday I wrote a WordPress Login Notification Plugin. And I use Anonymous Function (introduced in PHP 5.3) in the settings. It work well in my server but when I install it in my client site, the settings page is truncated even though my client use PHP 5.3.

settings-page-truncatedAfter some googling, I found that we cannot use $this in anonymous function in PHP 5.3, we can use that only in PHP 5.4 +. Thank god I didn’t get fatal error 🙂 Read More How to use $this in Anonymous Function in PHP 5.3

How To Add Background Color (Highlight) Option in WordPress Editor TinyMCE

WP Editor TinyMCE Text Highlight Backgrond Color
WP Editor Background Color Option

WordPress Visual Editor only have text color option. But sometimes we need to highlight the text by changing the text background color. TinyMCE (the editor script) actually have this feature, but WordPress hide it to make the visual editor simpler. But if you need this feature, you can activate this feature using very simple code.

Read More How To Add Background Color (Highlight) Option in WordPress Editor TinyMCE