Jason Jalbuena http://jasonjalbuena.com Web Developer & WordPress Specialist Tue, 26 Jul 2016 17:32:48 +0000 en-US hourly 1 78717694 WordPress Plugin: Simple Bulk Episodes http://jasonjalbuena.com/simple-bulk-episodes/ http://jasonjalbuena.com/simple-bulk-episodes/#respond Sat, 23 Apr 2016 16:57:12 +0000 http://jasonjalbuena.com/?p=864 Simple Bulk Episodes provides a simple way to add a bulk of episodes for use by the Seriously Simple Podcasting plugin.

Seriously Simple Podcasting (SSP) is an awesome podcasting plugin that provides everything you’d need to publish a podcast. I’ve been using it extensively and it is truly simple and very straight-forward to use.

What problem does this plugin address?

The only issue I had was that adding multiple podcast episodes at a time is a time-consuming and laborsome process. This isn’t really an issue with SSP as it uses the standard WordPress admin. This also may not be an issue for most podcasters as they probably record and publish no more than one episode per day at a time. As for myself, I upload and publish/schedule a months’ worth of daily episodes at a time. The actual process for me to add episodes with SSP is:

  1. click add new episode from within the WordPress admin
  2. Wait for the add episode page to load
  3. Copy episode title from spreadsheet
  4. Paste it to WordPress
  5. Open a Word/text document with the post content of the episode
  6. Copy content from the document
  7. Paste it to WordPress
  8. Copy URL of MP3 file
  9. Paste it to WordPress
  10. Enter length of episode (my episodes are uploaded outside the WP install and thus SSP is unable to auto-detect this)
  11. Edit the publish date-time to a specified date using the admin UI
  12. Schedule (publish in the future) the episode
  13. Wait for the page to process your episode and reload
  14. Repeat everything above for every episode needed for the month (20-22 times for a weekday only podcast)

Simple Bulk Episodes aims to speed up that process!

It’s as simple as entering all your relevant podcast episode information to a spreadsheet, copying the info and pasting it into the plugin’s Bulk Episodes page in the WordPress Admin.

For my process, I already receive a spreadsheet with the month’s worth of episodes that includes episode info such as the title, publish date, and MP3 Url. I need to add the episode length and copy / paste episode text content (html formatted, in one line – no spaces). Once all the podcast episode information is ready on the spreadsheet, adding all the episodes thru the plugin’s admin page is as simple as:

1. Copy all data from the spreadsheet and paste it to the plugins text field. Click on Continue

2. The next screen that loads is the verification screen. If all the data is displayed properly, click on Verify and Submit near the page bottom to submit the data and add all episodes to WordPress/Seriously Simple Podcasting. If data isn’t correct, click on start over near the top so you can repaste your spreadsheet data – this essentially takes you back to step 1.




3. If everything was good to go on step 2 and you clicked on Verify and Submit on step 2, you are taken to the confirmation screen. Done!! This screen gives you a listing of all the episodes added as well the links to edit and view each one of them.

How to get it

You can install the plugin thru the WordPress Plugins -> Add New page and searching for Simple Bulk Episodes or download it at the WordPress.org repository here: Simple Bulk Episodes.

You can contribute to or fork the plugin thru its project page on GitHub: Simple Bulk Episodes.

http://jasonjalbuena.com/simple-bulk-episodes/feed/ 0 864
Google search operator bookmarklets http://jasonjalbuena.com/google-search-bookmarklets/ http://jasonjalbuena.com/google-search-bookmarklets/#respond Thu, 07 Jan 2016 18:56:54 +0000 http://jasonjalbuena.com/?p=860 Bookmarklets have been around for a looong time and I’ve used more than a few over the years, however am a newcomer when it comes around to making my own.

What’s a bookmarklet you ask? Simply, it’s a browser “bookmark” that extends the use of your browser. More technically, when a bookmarklet is clicked on it runs javascript on the browser – which could be programmed to do a huge variety of different things.

With that in mind, I decided to make a few of my own to simplify a couple of SEO research related tasks that I do from time to time.

To make these bookmarklets your own, drag the corresponding bookmarklet icon from below to your browsers bookmark area. If that doesn’t work on your browser, check out this guide from marklets.com. I’ve tested these on the following browsers: Chrome 46, Firefox , IE , and Safari.


Link bookmarklet

when clicked on this bookmarklet will search Google for the current displayed URL using the link: search operator. In effect, it will return pages that link to the URL you are on when clicked.


Site bookmarklet

when clicked on this bookmarklet will search Google for all URLs found in Google’s index for the current website. It uses the site: search operator and works best when used on a website’s home page.


Related bookmarklet

When used this bookmarklet will return a google search page showing other URLs that Google thinks is related to the current URL. This uses the related: search operator.


Info bookmarklet

This bookmarklet when clicked will return information regarding the currently displayed URL. It basically provides links to other URL related search results for the current URL. This uses the info: search operator.

For a full list of Google’s “official” search operators click here.

http://jasonjalbuena.com/google-search-bookmarklets/feed/ 0 860
Summit Sounds Studio http://jasonjalbuena.com/summit-sounds-studio/ http://jasonjalbuena.com/summit-sounds-studio/#respond Thu, 24 Dec 2015 03:33:39 +0000 http://jasonjalbuena.com/?p=857 Summit Sounds Studio is the recording studio of Summit International School of Ministry. It is used to teach their students about music technology and for rent for sessions or recording projects.

Summit needed a new website to showcase their studio and contracted my great designer friends Hybrid Studios for the overall visual design and I took care of turning their design, a custom implementation of a premium WordPress theme, into the final website.

Project Highlights

Server setup and WordPress installation

A new installation of WordPress was needed for this project. Summit’s existing web server was prepped for this new website and WordPress, the theme, and required plugins were installed.

Photoshop PSD of customized WordPress theme to working website

Hybrid provided me with PSDs of their design and the theme with which to do the work with. Some WordPress themes are very intuitive and straight-forward to install, properly set-up, and customize. Other themes, including this one, was not. It had way too many confusing options, used language and grammar that was not user-friendly for most users, and required a number of plugins installed and used in a particular way. I was able to properly set-up and customize the website to their specifications.

http://jasonjalbuena.com/summit-sounds-studio/feed/ 0 857
Disable WordPress update notifications and nags, properly http://jasonjalbuena.com/disable-wordpress-update-notifications/ http://jasonjalbuena.com/disable-wordpress-update-notifications/#comments Wed, 12 Aug 2015 15:09:57 +0000 http://jasonjalbuena.com/?p=852 So, I needed to disable all upgrade notifications and nags in a WordPress install. Searching the web yielded many results, most of which work and are pretty similar.

What doesn’t work

Some of what I found included code to remove wp_version_check and pre_option_update_core, like:

add_action( 'init', create_function( '$a', "remove_action( 'init', 'wp_version_check' );" ), 2 );


add_filter('pre_option_update_core', create_function( '$a', "return null;" ));

…but neither alone nor together work to remove WordPress Update notifications.

What Works

A lot of what I found look something like this:

function remove_core_updates () {
global $wp_version;
return(object) array(
'last_checked'=> time(),
'version_checked'=> $wp_version

This works well to remove all WordPress update notifications.

Since there is more than one way to achieve the same goal, other code samples would attempt to remove core (not theme or plugin) update notifications by using variations on pre_site_transient_update_core, such as:

add_filter( 'pre_site_transient_update_core', create_function( '$a', "return null;" ) );



They all work to remove update notifications. There are also plugins available to achieve the same goal, but they contain the same code.

The problem with what works

Now, the code above works, but there is a problem. In an environment where debugging is turned on (such as on a local testing environment or server), the code produces a bunch of error notices in the Updates page, like so:

disable wp update notifications error notices

I aim to ship error-free code, so seeing any number of error notices is unacceptable.

The fix is to set an empty array to the updates property of the object returned by the filter to pre_site_transient_update_core, like so:

'updates' => array()

So all the code you would need to properly remove all update notifications from a WordPress install is:

function remove_core_updates () {
global $wp_version;
return(object) array(
'last_checked'=> time(),
'version_checked'=> $wp_version,
'updates' => array()

And it results in a clean, error-free Updates page.


1. The code should go into your theme’s functions.php file or in a plugin.

2. It is a good idea to wrap everything in an if statement, that way you could disable the notifications for certain users, environments, or whatever criteria you may have. In my case, notifications are disabled in the live/production environment but is present in local testing.

http://jasonjalbuena.com/disable-wordpress-update-notifications/feed/ 2 852
South Bronx Early College Academy Charter School http://jasonjalbuena.com/sbecacs/ http://jasonjalbuena.com/sbecacs/#respond Tue, 02 Jun 2015 01:14:13 +0000 http://jasonjalbuena.com/?p=834 The South Bronx Early College Academy Charter School is a NYSED authorized New York State charter school.

They had an almost complete website, but needed help in getting the last leg of work done to get it ready for their website’s launch. They had purchased a premium WordPress theme and needed help with changes that the theme’s options didn’t provide.

Project Highlights

Website design layout

SBECACS wanted to change their website’s layout changed on site-wide. They needed changes to their site’s header/navigation area and to remove their content’s “floating page” appearance. The images above compare their previous homepage (left) and the homepage after changes were complete (right).

Homepage Options Admin

SBECAC homepage adminSBECACS also asked for the ability to have a rotating banner carousel and an announcements area on their homepage. To make it easy for them to update their requested homepage features, I made a custom, easy-to-use admin page with which they could quickly add or remove announcements and add or remove rotating banners.

http://jasonjalbuena.com/sbecacs/feed/ 0 834
WordPress Plugin: WP-phpMemcachedAdmin http://jasonjalbuena.com/wordpress-plugin-wp-phpmemcachedadmin/ http://jasonjalbuena.com/wordpress-plugin-wp-phpmemcachedadmin/#respond Sat, 30 May 2015 04:41:08 +0000 http://jasonjalbuena.com/?p=830 Use the excellent web-based stats viewer for memcache, phpMemcachedAdmin, within your WordPress admin. This plugin serves as a wrapper for phpMemcachedAdmin.

From its homepage, phpmemcacheadmin is a:

Graphic stand-alone administration for memcached to monitor and debug purpose

This program allows to see in real-time (top-like) or from the start of the server, stats for get, set, delete, increment, decrement, evictions, reclaimed, cas command, as well as server stats (network, items, server version) with googlecharts and server internal configuration

WP-phpMemcachedAdmin adds phpMemcachedAdmin to the wp-admin’s Tools menu. Only logged-in WP admins, or a user with the manage_options capability, can view and use it. Attempts to directly view phpMemcachedAdmin by viewing its index.php file in a browser will fail.

The proper use of this plugin requires that memcached is installed on the server.

Download WP-phpMemcachedAdmin

The link above is a direct link to the downloadable .zip file available from its Github home WP-phpMemcachedAdmin.

Because I wanted to touch the phpMemcachedAdmin code as little as possible, I run phpMemcachedAdmin thru an iframe. For this reason, this plugin is not available in the WordPress plugin repository.

Lastly, this plugin is released under GPLv3, making it compatible with WordPress (GPLv2 or later) and phpMemcachedAdmin (Apache 2).

http://jasonjalbuena.com/wordpress-plugin-wp-phpmemcachedadmin/feed/ 0 830
twelv2athlete.org http://jasonjalbuena.com/twelv2athlete/ http://jasonjalbuena.com/twelv2athlete/#respond Thu, 28 May 2015 03:59:33 +0000 http://jasonjalbuena.com/?p=814 Twelv2Athlete is a sports ministry program that focuses on the development of endurance and skill training as well as providing scholastic, social, and spiritual development through Christian mentorship.

The Twelv2Athlete website was already up and running when I started working with them. They purchased a WordPress theme and had it customized for their needs. However, they had design ideas the theme just didn’t accommodate for and needed a developer to program their design ideas and make them a website reality.

Project Highlights

Finalizing Design Ideas and Work Process

Twelv2Athlete had design ideas, they aren’t web designers and thus didn’t have Photoshop mock-ups of what they wanted. What they did have was clear ideas of what changes they wanted – which was great for me because although I can do some design work, am not a designer and I do my best work with code (not Photoshop). Our work process was them saying: “we like feature A from website 1 and feature C from website 5. Will that work?” I would then make a JPG mockup or a working HTML prototype. Because they were clear with what they wanted, revisions were minimal and I would then WordPress-ize the idea. The process was repeated until the project was complete.

Homepage Redesign


The homepage was the first area of focus. It required site-wide changes to their header and footer areas, adding a search box, moving some elements around like their logo and social media links, making their banners and images larger, adding a rotating text carousel, and a one line site tag-line. And making all of that responsive, so that everything looks good and is readable in any device, regardless of its screen size. As seen from the before (1st image) and after (2nd image) screenshots above, the changes did a lot to modernize their homepage and highlight their images more.

Homepage Admin Settings Page

122-home-adminAlthough they did not request an admin, they did have the need to be able to update the homepage content on their own. Rather than making the homepage admin be, to them, a complex maze of HTML and CSS – I made the admin be a one-stop admin page for changing everything on their homepage (rather than have separate options pages for every homepage feature) and made sure it is easy to use and intuitive.

Inside Pages Redesign


The website’s internal pages also needed a design facelift. Comparing the old design (1st image) to the update (2nd image), the pages incorporated the site-wide header & footer changes and big changes to their layout, presentation of content, a friendlier & more complete sidebar navigation, and the addition of the full-width image banner on top. All the changes made are responsive, so they are usable when viewed in either a desktop computer, mobile phone, or any size of device. All the changes were made to the WordPress theme templates, so all the Twelv2Athlete team had to do was add the banner image (and optionally update their content).

http://jasonjalbuena.com/twelv2athlete/feed/ 0 814
sistercor.com http://jasonjalbuena.com/sistercor/ Sat, 28 Feb 2015 19:06:10 +0000 http://jasonjalbuena.com/?p=736 The Sister Cor website needed an update and my great designer friends at Hybrid Studios needed some customizations made to a purchased WordPress theme.

Project Highlights

Server setup, theme installation and customization

sistercor.com blogBesides Sistercor.com’s design update needs, it also required a new server. I found a new hosting plan for them and setup a server that met their needs and budget, installed WordPress, their theme, and entered all their content – making sure each page matched the design they wanted. Also, although most WordPress themes provide ways to customize its appearance, some design customizations outside what the theme provided were also made.

Custom Portfolio Integration

sistercor portfolioThe design called for a third-party portfolio to be used instead of what the WordPress theme came with. The portfolio was integrated with a few minor design & functional tweaks to make it work seamlessly with the rest of the website.

Custom Admin Plugin

sistercor custom portfolio pluginThe custom portfolio that was integrated was not a WordPress plugin and thus did not come with a WordPress admin interface. A custom plugin was made to easily modify and edit the portfolio thru the WordPress admin area. Great care was taken to make sure that editing the portfolio was easy and simple to use.

SummitPA.org http://jasonjalbuena.com/summitpa/ http://jasonjalbuena.com/summitpa/#respond Sat, 28 Feb 2015 04:35:23 +0000 http://jasonjalbuena.com/?p=804 Mount Zion International School of Ministry went thru major changes and rebranding. They went thru a lot of changes not only in terms of management and the student experience but they also changed their identity including (but not limited to) their name to Summit International School of Ministry, redesigned their logo (by my great designer friends at Hybrid Studios), and needed a totally new website.

Project Highlights

Photoshop PSD to WordPress

Coy Lothrop did their new website’s design and provided me with layered Photoshop PSD files, from which the entire WordPress theme for Summit was custom coded. The entire site was made as a dynamic, customizable website using WordPress’ features such as pages, posts, widgets, menus and plenty more were incorporated into the theme.

WordPress as CMS

summitpa custom post type edit screenWordPress is a full and proper Content Management System (CMS), and this site proves it. Everything is 100% dynamic. Multiple custom post types were used, each with their own set of custom meta boxes (custom fields), custom admin views, options pages and more.

Custom Media Center

The design called for a media center able to handle videos and mp3s of messages recorded from the sunday messages from the school’s church. I was unable to find a suitable WordPress plugin to be able to handle both media types seamlessly and work with the design they wanted to have. A custom media center plugin was developed for them that meet their needs and was easy for them to use and keep updated.

Custom Photo Gallery

Summitpa student life housing galleryThe website’s Housing page in the Student Life section was in need of a custom gallery to be implemented. A custom plugin was made that aesthetically integrates the housing page’s design on the public, front-facing views of the website, while the admin back-end was made to be simple & intuitive and integrates with galleries created by the awesome & priceless NextGen Gallery plugin.

Student Blog

summitpa.org student blogPart of the website redesign/school rebranding project included the creation of a student blog: Summit Up. Design-wise, the blog is made to look like the Student Life section of the overall site, but with a few unique elements to make it more blog-like, so a separate custom theme was created to facilitate this requirement.

Lots of Other Features

A ton of other features were made for Summit’s website. They include features such as a parents section, alumni section, paypal powered payment & donation pages, several forms, custom archive presentation of different content/post types, a central admin/back-end calendar that displays varying events among a number of differing calendars, and many more.

http://jasonjalbuena.com/summitpa/feed/ 0 804
Why we moved away from Media Temple http://jasonjalbuena.com/media-temple-fail/ http://jasonjalbuena.com/media-temple-fail/#respond Tue, 10 Feb 2015 02:26:35 +0000 https://jasonjalbuena.com/?p=701 Media Temple. A web host that promised us (my day-job company) so much, yet failed us big-time in an area they’re supposed to be the experts at.

We have 2 VPSs, a production VPS and a test/staging server. The production server is fully managed — which really means it has Media Temple’s CloudTech Priority Care, where they fully manage the server and take care of it. In other words, we’re paying a premium for their service to fully care for and manage our servers and we expect them to be able to deliver.

This blog post outlines how they failed us and is meant to inform the web audience at-large of our experience. Media Temple (mt) is a good host. Mostly.

It all started when I first noticed that their new VPS plans come with SSD drives and double the RAM. I contacted tech support if we would automatically be rolled over to their new offering. They said we could and we would need our VPSs to be migrated to new servers, which would incur about 3-4 hours of downtime.

Note: I don’t control all the DNS records for all our domain names. I have to schedule DNS changes with another person. Also, all times stated here are PT, where (mt) is based and is the timestamp they use everywhere.

And here is failure #1: Migration scheduling fail.

At 11am I asked them to schedule the migration for 1am, an hour with a minimal amount of traffic. They don’t respond to me at all leading me to not coordinate DNS changes with our DNS person. I call (mt) late at night to verify if the migration is happening. It isn’t.

Failure #2: Migration fail.

2 days later, I schedule the migration again. This time they do respond. At 1am they start the migration and we update DNS records to go to the new IP address. After getting some sleep, I check on the migration at around 5:30 and notice the site isn’t up. I call (mt) and they note in my migration support ticket that I called about the site being down. At 6:08am they rollback the migration because their automated migration failed. We restore the DNS and our site is back up. (mt) says their engineers are looking into what caused the migration failure and will get back to me when they figure it out and the migration can proceed.

Failure #3: They don’t get back to me.

Failure #4: Successful migration, but with licensing problem.

12 days later I ask them if migration can proceed. They said yes, and since now am hesitant, I only have them migrate our test server. Migration is set for 12MN. At 12:14 they start the migration and less than 30 minutes later at 12:42 they say that migration is complete. After getting some sleep, I wake up and check the migration. Test server is up and running. Hurrah, web pages work!! I try to login to the server’s WHM and cPanel and I get a license issue notice and can’t login. I call (mt) right away at 5:38am about it. At 12:24pm, nearly 7 hours later, they say that the ticket was re-assigned to someone else and that it will take some time. Over an hour later at 1:42pm, they close the ticket saying everything is fixed, and it is.

Failure #5: Communication fail.

With confidence the day after that (mt) can migrate a server and at least have it running, I schedule the live server to be migrated in 5 days. I also forget that am going to be off-site in a conference that day. I noticed that they were scheduling everything with Pacific time where they are, not Eastern time where I am. That’s a failure, but maybe it was my fault for not noticing. Anyway, I schedule the migration for 9pm PT. Migration starts and we update our DNS records. 7 hours later at 4:01am I call them on the phone as there is no update on the ticket, the website on the server was not displaying correctly, and cPanel was giving me a licensing issue (notice how I always have to call them?).

Failure #6: Automatic messaging fail.

With their automation at 4:36am, (mt) says the migration is complete, but our site is still not up. I inform them at 4:52am that it’s not and they apologize 6 minutes later and say that they are working on it.

Failure #7: Licensing issue again + Really long downtime, major major FAIL.

At 6:08am (mt) finally says it’s a licensing issue (duh!) and they say that we will be updated when the engineering team resolves the problem.

At 7:17am I ask for an update as total downtime is now 10 hours.

At 7:43 (mt) says that there are no updates and to expect one in the next 6 hours. I think (insert response of choice words here).

At 8:57 I tell (mt) that waiting for the license issue is ok, just get my site up (don’t they remember they had my test server up tho its cPanel had a licensing issue?). At 9:14 they say they can’t as they need it fixed before they can troubleshoot.

At 9:30am we wisen up and point the domain name to another URL with an out of service message.

At 10:26 we asked what they can do about the huge disappointment of 13 hours of downtime. At 10:41am, they say we’ll get a $149 credit. Really, that’s it?

At 11:53am, with 15 hours of downtime, they say everything is resolved. I decide not to update DNS until I can go home from the conference and give it my full attention.

Home at 5:55pm and the DNS is pointed to the new (mt) server. WHM and cPanel work like they should and configuration shows like it should.

Failure #8: Migration configuration fail

So although WHM/cPanel now work, the site still isn’t up. At 6:02pm, I call (mt) again, this time I’m on the phone for 48 minutes with them. It’s discovered that the settings for IP address had the previous server’s address on them, not the new one. Fail, fail, fail!

At 8:30pm (mt) confirms fixing the IP address problem. A problem is found in my code, also regarding IP addresses. I fix the address and the site if finally fully up and running at 8:36pm, for a total downtime of 23.5 hours.

Notice how long it takes (mt) to respond? It takes them at least 15 minutes each time.

Anyway, to (mt)’s credit, their customer support people are well-trained on the phone, were always apologetic, and pleasant on the phone. And they did give us our $150 credit for 23.5 hours of downtime (not that it helps).

(mt) has been a good host in other areas of hosting, but in our case they failed because they clearly demonstrated that they:
1. can’t manage migrating a server properly (from within their servers!!)
2. can’t manage WHM/cPanel licensing properly
3. can’t manage a server without WHM/cPanel
4. don’t communicate when they say they would or should

Our experience with them, as outlined above, has left a very bitter taste. They failed us and our confidence in them is gone. At the time of this writing, we are still in process of moving our assets out of (mt).

Lastly, in case you want to know, the major down-time happened in December 2014.

UPDATE #1 / Failure 9: Billing fail

When we signed up with Media Temple we signed up for 1-year and received the annual discount (2 months free) and, because we are a non-profit, an ongoing additional 15% discount on everything.

So to my surprise, weeks after the whole migration nightmare, I discovered some pretty terrible billing practices that (mt) does.

1. For every server migration, they terminated the previous billing item (VPS), gave a credit for the remaining unused portion and opened a new one. This is totally understandable.

But, this is a fail tho because what they did was:
a. Give a credit on the previously discounted amount and then, with the new VPS, charge to the end of the month without our ongoing discount (charged us full price).
b. Gave no communication / email that they were going to do this. Surprise to your budget, here’s a receipt!!
c. Pro-rated to the end of the month. We signed up for a year…
d. They did this even with the first failed migration attempt – that they had to cancel and return our VPSs to where it was – The VPSs didn’t move.

2. For every month until the end of the year, each VPS was billed at the full monthly price. No discount, no communication, never mind that we had signed up for a year.

3. At the start of the year, they charged us for a whole year. Never mind that we didn’t sign-up at the start of the year, they effectively extended our term with them. Again, this was done without any communication. This time tho, they didn’t charge us full-price for both VPSs. 1 VPS was given both discounts (annual and [so-called] on-going non-profit discount), while the other was given only the annual discount. Again, surprise to your budget, here’s a receipt!!!


I renamed this post from “Why we’re moving away from Media Temple” to “Why we moved away from Media Temple”.

UPDATE #3: (mt) did something right

(mt) makes cancelling your account very easy. They did something right!!


Photo by sixthlie (cc), cropped & resized.

http://jasonjalbuena.com/media-temple-fail/feed/ 0 701