Posted on

WooThemes Site Changes

WooThemes has updated WooCommerce and their flagship (their words, not mine) theme Storefront many times in the past few months.   The most recent changes have improved some things in our shopping experience on the Store Locator Plus site.  Some of the changes, however, have broken fundamental elements of the Store Locator Plus storefront.    We are working on patching things like the Downloads Page for Premier Subscription holders and have found a number of smaller glitches with subscriptions that we are chasing down.   Unfortunately we are spending a lot more time chasing down WooThemes issues this week than we would like.  We’d much rather be improving Store Locator Plus than figuring out what WooThemes did that “improved” their product while breaking our site.

If anyone has a clue as to why Groups by ITThinx, WooCommerce, and WooThemes Storefront would stop playing nicely with each other, please shoot us a message.

Come to think of it, this isn’t much different than spending much of the past 3 weeks trying to figure out why WPML’s “well it works for everyone else” mantra doesn’t apply to gettext() in SLP.  Maybe it is just us, but we sure hope that is not the case.   In the meantime we appreciate your patience as we try to coax the code in our products and the products of those other “WP shops” into behaving.

In the meantime please feel free to post in the forums or shoot us an email at support@ if you have any pressing issues.

Posted on

Coupons Deactivated

Coupons Banner

I just uncovered a flaw in the Woocommerce Coupons System that was badly abused by a surprising number of people.   Due to the flaw in the coupon system and the dozens of non-qualifying “orders” that were placed at heavy discounts of 75% to 100% off of the products offered here, I have had to discontinue the upgrade coupon program for Store Locator Plus 4.

It is nice to know so many people like the Store Locator Plus plugin and add-on packs enough to want to go through the effort to take advantage of the coupon flaw to gain access to the add-on packs.   The total amount of discounts may have exceeded sales this month.  I won’t know for certain until I finish calculating the tally.    The unfortunate side effect is less time that can be spent working on new features and bug fixes.

If you have purchased Store Locator Plus version 3 products in the past and believe your purchases qualify for a discount, please contact me.  Send me your Store Locator Plus 3 order number or PayPal transaction ID and I will create a one-time-use custom coupon for your upgrade purchase.    Since Store Locator Plus 4 has been out for 6 months the 100% off coupon, which was the most-often abused, will no longer be available.   If you purchased Store Locator Plus version 3 add-on packs within the past 365 days I will offer a 75% discount on the SLP4 compatible version of the add-on pack you had purchased previously.

I apologize for the extra work that some customers will be required to undertake due to this issue.


Posted on

Daily Update : Woocommerce Plugins + SLP Updates

It has been a crazy couple of weeks between multiple coding projects, private consults, and the school year-end mayhem on the home front.   Here is what I’ve been working on when I’ve found some free coding time.

Woocommerce Premium Plugin System

My primary focus has been on this project.

Work continues on my WooCommerce add-on pack that will keep track of specific product versions ordered.  The plugin will help maintain easier access to prior release versions for each add-on pack.  It also provides a mechanism that will allow store owners to choose whether or not to charge an upgrade fee when new feature releases come out.    I will be using this feature to provide free patches on the various products while charging upgrade fees when there are features added to products.  This is also the base system needed to manage the Enterprise Subscription model that I hope to release this summer.

This add-on for WooCommerce will provide the funding mechanism necessary to accelerate new feature development across the entire line of plugins, especially Store Locator Plus.

Tagalong Updates

This will be my main focus over the next few days.

This week I will be spending time cleaning up some Tagalong bugs that have been reported.   I hope to have a Tagalong patch release out later this week.

Pro Pack Update

There is a minor update to Pro Pack in the works, basically code cleaning that I stumbled across while doing some debugging.    Along the way I added a new feature to Pro Pack that allows you to enter an address in a separate box on the Pro Pack tab and get back the lat/long for that address.    I’m not sure if anyone will find it useful, but it saves me time debugging other sites as I can quickly check if a given address will return the lat/long I am expecting from Google.   If it saves me time from having to go and use third party lat/long location tools, someone else might find it useful as well.   It will be a feature in the next release of the Pro Pack.

New Restaurants Iconset

I have been building a new “Restaurant Icon Set” that will be available sometime in the near future.   I needed a place to store new icons for testing with Tagalong but did not want to clutter the base plugin.   The icon set add-on system was designed a long time ago but I’ve never really done much with it outside of the original “Google Old School” icons I used for testing.   Since creating a new icon set add-on takes less than 20 minutes I decided that was the best place to store the new icons.   More icons means better images for screen shots and videos, which is something I am always looking to improve on the marketing side of things.


Posted on

WooCommerce Downloads Dev Cheat Sheet

WooCommerce Products Banner

While writing my WooCommerce Premium Plugin System (Woops) I was having issues finding simple documentation on the hooks and filters I needed to build my plugin.  This is where I’ve stored my “working papers”.  The cheat sheet and notes about the stuff I need to remember or want to track while building the plugin.   It may help some other devs build their own WooCommerce add-ons as well.

Downloadable Products

My account has a different mechanism to list downloads than viewing order details.


When a product has a download attached to it a unique download ID is assigned.  This download ID is attached to the order via a unique download_id that is tracked in the woocommerce_downloadable_product_permissions table.


Q1) If the product download file is changed to a different file, will the user be able to download the new file or just the original version of the file?

Simple Answer) It will allow downloads to the new file.

A1) If you use a static URL like they will always be able to get the latest version of the download whenever the source is updated.   The download_id and all records in the woocommerce_downloadable_product_permissions table remain static.

A2) When changing the download file by editing a product and choosing “upload file” the content of the file paths will change.  When this changes WooCommerce copies all records in the woocommerce_downloadable_product_permissions table that have the old download ID to add a new record with a new download ID, in essence doubling all the download records for download orders for that product ID.  This happens in the writepanels-init.php via the woocommerce_process_product_file_download_paths() method.


I) NOT changing the upload file by editing the product and choosing a new download file is far more efficient. For the reason noted in A2.

II) woocommerce_process_product_file_download_paths() uses the woocommerce_file_download_paths filter to modify the EXISTING file path(s) for a product.  That is the content of the file path(s) field on the product BEFORE editing/saving the product.  Thus you can only make it appear as there was no file prior to adding a new one, however the mechanism that duplicates the records in A2) above does an array diff to determine what records to change.

III) To disable the duplicate download copies the action woocommerce_process_product_file_download_paths() needs to be overridden.

Updating Product Download Files Methodology

When a product is updated via the admin panel and the file paths (downloads) entry is changed, WooCommerce runs through the writepanel-* procedural code.   Buried deep in that nest of code is the woocommerce_process_product_file_download_paths interface.


I) If you prevent the automatic update of the downloadable_product_permissions table via a remove_action() call then the users will lose access to their downloads when a new download file comes online.    Using this method to remove access to newer downloads means a new method must be implemented to allow access to older versions of the files.

In version 2.X of WooCommerce some of the hooks and filters to manipulate the process includes:

woocommerce_process_product_file_download_path() – called from the writepanel-product-type-variable and writepanel-product_data procedural code.   Also called from the product->has_file() call, which is used to build the list of available downloads.

woocommerce_process_product_file_download_paths() – called from the writepanel-product-type-variable and writepanel-product_data procedural code.   Also called from the product->has_file() call, which is used to build the list of available downloads.   Called FIRST in the has_file() method which sets a variable that is the first parameter in the download_path() (singular) filter noted above.

My Account Download List Methodology

My account uses the WC_Customer.get_downloadable_products() method. This method loops over the woocommerce_downloadable_products_permissions table and iterates once for each order_id, product_id, download_id combination.

In version 2.X of WooCommerce this only has 3 potential hooks or filters to manipulate the results:

woocommerce_order_is_download_permitted – called once for each order being processed in the get_downloadable_products method
woocommerce_downloadable_product_name – called multiple times while building the downloads stack
woocommerce_customer_get_downloadable_products – called at exit of get_downloadable_products method

Hooks and Filters

My unofficial documentation on WooCommerce version 2.x hooks and filters that I need to manipulate the product downloads and related information.


A simple filter that determines if a current order is allowed to download stuff.

[0] - boolean based on current download permission
[1] - the current WC_Order object


Gets the “stack” of downloads available to the user, shown on the “my account” page. Downloads is a named array:

download_name - filtered per woocommerce_downloadable_product_name


[0] - fully qualified URL of the download file
[1] - the product ID 
[2] - the download id, the MD5 style key in the woocommerce_downloadable_product_permissions table

This is called whenever a file is requested directly from a URL, as in when a user clicks a download link on their order. The file path can be modified by using this filter.


[0] - stack of file paths, the key is an MD5 key to downloadable_product_permissions table, value is the file path
[1] - the product ID 
[2] - the order ID (null for the product->has_file method)
[3] - the item (null for the product->has_file method)

Called at the START of the product->has_file method, which then gets tested before setting file_path for the woocommerce_file_download_path (singular) filter noted above.


[0] - post_id
[1] - variation id (or 0)
[2] - file paths stack

This action manages the updates to the downloadable product permissions table. It is called by the writepanel-product-type-variable and writepanel-product_data processors via the do_action WordPress function. Both procedural scripts fire the writepanels-init function of the same name.


[0] - Title + file Number
[1] - Product object
[2] - Download ID
[3] - File Number

Used to set the download name that renders when a user views “my account”.

Posted on

Daily Update : Store Locator Plus 3.11.2

store locator plus banner

Store Locator Plus 3.11.2

Store Locator Plus 3.11.2 was released today with a minor patch and a new feature.

Default CSS

The default css was updated to add more specific rules to help the layout work with more WordPress themes.

Initial Radius

The SLPLUS shortcode was updated to add an “initial_radius” option.   You can use this to change the initial radius on a per-page basis.

Other Updates

I will be looking at various bugs and other issues that have been reported with Store Locator Plus and the add-on packs.  General enhancements and improvements will be minimal while I continue work on the Woocommerce customization that is required for Enterprise Subscriptions and crowdfunding.   The Woocommerce Premium Plugin System work continues with some of the basic features in place such as attaching the version of a purchased plugin to an order.

Posted on

Daily Update : Debug My Plugin / PlugIntelligence / Store Locator Plus

I’ve been trying to get back into the “coding rhythm” after a lot of distractions recently.   Helping out at my son’s school swim lessons.  Counseling friends and family on business matters, family matters.  Business trips and other things that are very non-techie.     I’ve managed to get a few things done over the past week, despite only having a few hours here & there for coding.

Debug My Plugin

I just put out an update to Debug My Plugin, the Debug Bar add-on.   The most recent update adds the ability to create multiple panels within Debug Bar each with a different label.  This makes it easy to not only break up the debugging output into functional elements on the UI but also allows multiple plugins on the same site to use Debug My Plugin without co-mingling the debug output into one “dump screen”.

This is a new tool that I’ve been using to make debugging all my plugins, including Store Locator Plus, less intrusive in the user interface.    If you ever have the urge to check it out you can install Debug Bar and the Debug My Plugin add-on.    When you run Store Locator Plus you will see extra panels being added to the Debug button on the Debug Bar admin bar.     I only have a few panels in at the moment, but eventually all debugging will go into the Debug Bar interface.   It eliminates the UI clutter, which is very helpful when debugging UI issues.    It is also lighter than the custom debugging system that is wrapping inside the wpCSL framework that Store Locator Plus uses.     If you do try this out,  don’t do so on a public or production site.  It does slow things down a little and if your users have admin interface access of any sort they may be able to see internal data you may not want them seeing.


This is a plugin I created with a few hours of coding the other night.   It allows me to filter out the plugin search results from within my WordPress sites.    I use this to cut down on the “junk plugins” that WordPress returns.    The most useful filter I have in this plugin is “minimum tested version of WordPress”.   I’ve found that any plugin that has not been tested since the 3.3 release is very likely unsupported and not in active development.  For some searches this filters out a LOT of plugins I don’t want to look at.

The most recent release shows what filter parameters are set to on the top of every plugin search page.

A future update I’d like to add some day is the ability to turn the filters on/off with the “flick of a switch” right from the plugin search/results page.   Someday.

Store Locator Plus

I’ve done a couple of small patches for Store Locator Plus 3.11.2 that is coming out next week.   A CSS rule in default.css has been updated to fix positioning of the radius drop down menu on some themes.

The other new feature, which some people have been asking for, is the ability to use a shortcode to set the initial search radius for “immediately show locations”.

Woocommerce Premium Plugins System

This is a new add-on pack that I am writing for my own selfish reasons.   I need a way to support the Enterprise Subscriptions model that I’ve discussed on this blog before.    The only way to do that is to keep track of both the product and the VERSION of the product that people have ordered.    However there is NO PRODUCT that I can find on the WordPress eCommerce market that provides the feature set I need.   I’ve spoken to WooThemes, Cart66, and Easy Digital Downloads.  They all “get it” but nobody can offer a solution.

So I decided to write my own.  This is where most of my efforts are these days.

The goal is to great the Enterprise Subscriptions and then the Crowdfunding plugin so that I can generate enough income from the plugin sales to build out a lot of the cool new features people have been asking for.   While this is a distraction in the short term, in the long run I am hoping it provides the features I need on this site to support long term ongoing development of the Store Locator Plus ecosystem and spawns growth in some of the other plugins I have listed here.     If I can get this done properly that means I can contract some other programmers to help expedite the features that people are looking for.

With any luck I’ll have something cobbled together an usable within a few weeks.


Posted on

Daily Update : Store Locator Plus 3.10.3

Store Locator Plus 3.10.3

A new patch was issued for Store Locator Plus that fixes the editing of the Fax number field. The 3.10.X releases up to this point were erroneously pulling in and displaying the phone number data in the fax field on the edit page. This has been addressed, restoring the edit feature for the fax field.

Enterprise Subscriptions

I’ve spent some time in the past couple of days investigating the implementation of the Enterprise Subscription and paid upgrades functionality. It turns out that it is a much larger task than anticipated due to the limited (non-existent) hooks in the WooCommerce Software and Subscriptions add-on packs. I need to make a decision on whether it is more prudent to write my own custom product add-on for WooCommerce, try to get connected with the Woo Team and help them augment their offering, scrap WooCommerce in favor of an alternative, or drop the Enterprise Subscription idea completely.

Unfortunately the once-stellar documentation on the WooCommerce Codex has become a nightmare to navigate since their site revamp. There are dozens of broken links, missing pages, and most troublesome is the lack of documentation online or within the code. Maybe it is time to investigate other software store options. Does anyone have eCommerce recommendations for selling software like Store Locator Plus or the add-on packs via WordPress? I know of a lot of options but none are available with a software-specific feature set that I’m aware of.

Posted on

Building A Site for Digital Content Sales

Today I received an email from a friend asking if I could help someone he knows in building a website.   The request is simple, help build a website that connects to social media and allows for registered users to download a paper he has written, keeping track of these registrations as leads.

The immediate answer is easy.

Use WordPress.

Ok, so maybe too simple an answer.   WordPress is way beyond a simple blogging platform.  It is a complete website and even a web applications building platform.   Take the website, glue on the right theme, add a few plugins, configure.  Done.

Far easier than 20 years ago when I built my first web engine for an ecommerce site,  writing thousands of lines of Perl code. It just about took a Phd in computer science to build a site like that back then.  Today, WordPress… click, click, type some settings, click… write some content… done.   But how do you get there?

Step 1: Pick A Host

This has come up TWICE today, so I’ll tell you who I use then tell you who I would and would not go with for most sites.

First, what I use.   Microsoft.  Yup, them.   Running a Linux server.    CentOS 6-something.  In a virtual dedicated server setup.  I know, I know… Microsoft and Linux?   Yeah.  And it didn’t even burst into flames within moments of doing the install.    So how does that work?     Microsoft has a service they call Windows Azure.   Don’t let the name confuse you.    “Azure”, as I like to call it, is basically the Microsoft equivalent of the Amazon Web Services environment.   In other words “cloud computing”.   It is NOT just Windows.

A Slight Diversion : Cloud Servers

What is the cloud?  A fancy name for remote computers and web services.  Really no different than rented servers from any other ISP, but today the term “cloud” tends to refer to any online service that gives you a simple web interface and programming APIs to control the resource.  This includes web hosting and web servers.   Just like the web servers you’d rent from an “Internet Presence Provider” (IPP) 5 years ago.   The only real difference here is they tend to put an emphasis on using virtual machines, just like those you run on a desktop like VMWare or Virtual Box.

That said, there are basically the same options with “cloud computing”, like “the cloud” provided by Amazon and Microsoft, as there are with renting a server.  You can get a website-only plan, a shared hosting plan, and a dedicated hosting plan.   This is sometimes called something different like “virtual private server” and “virtual dedicated server”.

In my opinion, if you are doing cloud computing then you really should be only looking at Virtual Dedicated Servers.  Otherwise just eliminate the confusion of “cloud computing” and go with a standard host.

If your website is going to be HUGE and you are going to get tens-of-thousands of unique visitors (uniques) every day or will have highly variable traffic with peaks of tens-of-thousands of uniques/day, then investigate and learn cloud hosting and dedicated cloud servers.

For the rest of you…

Back To Hosting

Ok, so I use a  Windows Azure virtual dedicated server running Linux.  But I’m a tech geek.  I know system security, system administration, and coding.  I can manage my server without any issues.

However, for a typical hosting company where you may need some assistance and do NOT need  your site to carry a super-heavy load, there are other options.    However, before I make a recommendation here are some companies I would stay away from for various reasons.

Do NOT use:

  • GoDaddy.   Way too many people have problems with GoDaddy hosted sites.   I cannot tell you how many broken sites of clients and customers were fixed when they left GoDaddy.    I also cannot tell you how incompetent it was for GoDaddy to take down MILLIONS of sites for several DAYS because they cannot configure a network router.   Then they refused any form of compensation to anyone.  I don’t even host with GoDaddy but my domain name is registered there and they took me offline for days.   This is NOT the first time this has happened in the past 12 months.   Not too mention most of their support staff is clueless.

  • LiquidWeb.   They  used to be one of my favorites.  As they have grown in size they too have grown in incompetence.  They cannot run a shared server properly to save their life.   I often found myself training their support staff.   They too have crashed my dedicated hardware, my shared server, and those of several customers for days-on-end.  No compensation and no apologies in most of those cases.
  • 1-And-1.   I’ve had no personal experience other than through my clients.  Mis-configured network routing.  Inability to fix blatant DNS issues.  Crashed servers.  Less performance that advertised.  Difficult to get in touch with competent support.  I’ve been paid good money to PROVE that 1-and-1 was the source of several major problems for clients for 1-an-1 to finally admit the issue was theirs then take weeks to address the problem.

Ok… so you know who to stay away from.   Who to use?

Well there are 2 companies I don’t have personal experience with but I’ve heard good things about.  The first, I only know about through casual conversation and what other people said about them.   The other is one many clients, with deep pockets, have used and swear by them.  I’m aware of them but have not used them personally.   In either case I think you are in good hands.

  • ClickHost.  They sponsored WordCamp Atlanta.  Already bonus points there.  They KNOW WordPress and love it.   If you are doing a WordPress site they seem like a perfect it.  Reasonably priced and WordPress knowledgeable.  Plus they just seem like cool people.

  • RackSpace.  They are the “100% guaranteed up time” people.   And from what I here they NEVER go offline.   They also have top-notch support.  And you pay for it.   Probably the most costly of the hosts  that are out there, but if your site can NEVER go down, they have a reputation for pulling that off.   Unless you screw it up yourself.  Then they try to help you fix it.

Step 2: Install WordPress

If you use someone like ClickHost, this is a few clicks and a couple of web-form questions away from being online.   Easy.

If you “go on your own” then you download WordPress, setup the MySQL database, and install via web forms.  Once you get MySQL setup, the 15-minute part of the “famous 15 minute install”, then the WordPress install really is just 15 minutes.  Very cool.

Step 3 : Themes

The harder part now is selecting a theme.    Themes are the skin of the site.  How it looks. There are tens-of-thousands of them online.  There are dozens within the free themes directory on WordPress.  There are a lot more out there in various online stores.  Some are free, some are paid.

But one thing most people overlook?   Themes are not just a pretty face.   MOST come with built-in functionality and features.  Think of it as a skin plus some cool functional elements added in.  While not all themes add functions or features to the site, many do.  Especially premium ones.

It is often easier to find a theme that does 90% of what you want and then add a few plugins.    Finding a theme that LOOKS cool, but does JUST that then adding 20 plugins is often a more difficult route.   If you follow my other threads you’ll know why.  Many plugins in the free directory at WordPress are abandoned.  Some don’t work well.  Others just don’t work.   Don’t let me scare you, plenty are GREAT and work perfectly.  You just need to “separate the wheat from the chafe” and that can take some time.

My recommendation?  Start with WooThemes.  I’ve found they have the best quality themes out there and more importantly, they actually ANSWER SUPPORT QUESTIONS.   Many themes, including premium ones, skip the later point which can be critical in getting a site online.      How to avoid at all costs?  Envato’s Theme Forest.  I’m sure they have a few good themes in the hundreds the promote, but the chances are finding those few are just too low.   Of the 10 “your plugin is broken” messages I get every month, 9 of them (or 10) are from someone using a Theme Forest theme that is horribly written and just plain breaks everything in their way.  Including plugins.   DO NOT use Theme Forest stuff.

Ok.  So you’ve got a theme, it does what you want and/or looks cool.       Now what?

Step 4: Plugins

Go find a few plugins that do what you want.  Start in the free WordPress plugins directory but widen your search to the premium plugins.  Unfortunately there are not a lot of good premium plugin sites out there.  However many of the better free plugins on the WordPress directory have premium upgrades.

Again, in the  3rd party market stay away from Envato’s Code Canyon.   While they offer a few good plugins there are far too many bad ones in the mix.    Not to hammer Envato too hard, they have a good idea but they SUCK at quality control.  They are obviously just playing a numbers game and going for volume over quality.

Got It, But For My Site?

Now you know the components, here is where I would start to build a site like the one described initially.

1) Host with ClickHost.  Small host package is probably fine.

2) Install WordPress 3.5.1 (or whatever the latest version is today).

3) Install WooCommerce as a plugin.  It is in the free directory and you can find it right from the WordPress admin panel by searching “woocommerce” under plugins.

4) Go to WooThemes and find a WooCommerce compatible theme that you like.

5) Go to WooThemes and look at the WooCommerce extensions.  There are several for doing subscriptions and digital content delivery.  They are premium add-ons but relatively inexpensive.

6) Add JetPack to your site.  It is a WordPress plugin from the guys that build WordPress.   It adds a bunch of cool features that you can turn on/off without much effort.  Mostly the social sharing and publishing tools are what we are looking for here.

7) Add VaultPress.  Also from “the WordPress people”. This is your site backup.  You want this.  Trust me, the $15/month is worth it the first time you break your site or it gets hacked.

I also strongly recommend adding Google Authenticator so you have 2-step authentication for your site.  It reduces the chances of someone hacking your password from the web interface.   This is not critical to functionality or security but I do recommend it.

So that is how I would get started.  I’ve not recommended specific themes or WooCommerce extensions because they change frequently and there may be something that better suits your particular needs.

Good luck and happy blogging!

Posted on

How To Be Unproductive Doing 8 Hours of Coding

Today was just one of those days.   You know, THAT day.   When you wake up early, get online and think “this is going to be a good, productive day”.   Then all hell breaks loose.   8 hours later you’ve found yourself coding and doing system work all day long and have NOTHING to show for it.   That was my kind of day today.   What broke & what I learned so you may possibly avoid the same issues or at least spend less time fixing them.

Woocommerce 2.0

Ouch.  The new UI is nice.  They fixed some bugs.  They patched some security holes.   They didn’t document a DAMN THING when it comes to all the modifications in the core engine.  You know, little stuff like how their hooks and filters were changed.  The stuff that many third party Woocommerce add-on packs, their own add-on packs, and my custom PayPal tracking and licensing system utilize.    That made for another long day after spending 4 hours reading their code to learn what they changed and patching those items yesterday.   I don’t know how many other Woocommerce items broke yesterday, but I’m guessing it was more than just mine.

Today the PayPal IPN listener was not working.   Turns out they completely removed the original AJAX listener that was, and still is, documented on their site as “how to get your custom PayPal buttons to record transactions in Woocommerce”.   Thus, anyone that purchased the Pro Pack from within the plugin would not get recorded.  No sale.  No license.  No fun.

Some of the hooks and filters that impacted me were the way the WC_Order methods are written, how to fetch an order from a PayPal transaction, and other niceties.   If you have a custom processor for WooCommerce and PayPal and have issues, contact me at this site and I can share some of my hacks.

After HOURS of digging I finally discovered that I had to change my PayPal IPN settings for the new Woocommerce “feature”.   Thanks Woo team for letting all of us IPN users know.   Making the change was easy enough after reading code for 3 hours to learn what the heck they broke in Woocommerce, but…

PayPal IPN

PayPal, in typical fashion, has done half-a-job in making things work.  Once I discovered what I needed to change to get the IPN working with Woocommerce I went and updated my IPN address in PayPal.   Well, in a wonderfully useful moment of forward-thinking by the PayPal dev team, I learned that if you change the IPN service address TODAY then any transactions posted before TODAY will not use the new address.

OK, I guess I get that, but here is the fun part.   I have several transactions from this morning that were sent to the wrong location.   So I just change the setting to the new location, find the transaction, and click the “resend IPN transaction to your server” button.  That should do it, right?  WRONG.   They never read the updated URL.   Thus there is NO WAY to get those few wrong transactions to be put through to my server and “do the magic”.    What a PITA.     Because of this one simple issue I then spent another hour hacking Woocommerce so I could fake an IPN transaction without leaving a huge gaping security hole in my site.

Thanks PayPal.

Oh… and for the record, your PayPal IPN needs to be like this:

http://<your site>/?wc-api=WC_Gateway_Paypal

NOT the old-school /?paypalListener=paypal_standard_IPN setting.

However, not to be outdone, Microsoft decided to get in on the act.

Azure Code-word For…

I finally figured out why Microsoft named their new cloud service Azure.    At first I thought it was some clever reference to the sky… you know, clouds are in the sky, the sky is blue, but Amex kinda took that word and marketed the crap out of it… so clever Microsoft came up with Azure.  How cute.   But then I figured out what it really means…

Servers are shutdown out of the clear azure… I mean blue…

Yup, that’s right.    Here I was logged in to the middle of a log tracking session as a priv’ed user and suddenly out of nowhere I get a “Server being shut down for POWER OFF. Now.”.   WTF?!?!?    Yeah, that’s right.   Microsoft decided to just shut down my server.     I can’t get any answers from them as to what might have happened, how to look for potential issues, NOTHING.  Not a word.

Thinking “there must be a plausible explanation for this” I spent another few hours scanning my server logs.    Security breach?  Nope.  At least none that are recorded in ANY of the log files.      Rogue shutdown command?  Nope.   Hardware fault on the virtualized “metal”?  Nope.     After looking at Unix & Linux system log files over the past 25 years it sure as hell looks like someone just plain hit the reset or power-off button on the hardware.  For a virtual machine that simply means some dill-hole at Microsoft clicked the “power off” button on the wrong server in the host manager interface.   No warning.  No “let me check and make sure this is the right server”.  Nothing.

Maybe Microsoft can prove me wrong and show me a memory fault, security breach, or some other internal-based explanation of how my server just shut down but I’ll be damned if I can find it.

I’m going to hold my breath until Microsoft responds.

Now that I think of it, maybe that is where they came up with the name Azure…. I’m already starting to feel a bit dizzy… think I’m turning Azure….

Quality of Service

I didn’t even touch on the complete suckitude of a system that Microsoft-owned Expedia produced that I got to deal with in between.  When I get the occasional email from a Store Locator Plus customer saying things like “I can’t believe you can’t do X” or “how could you release a product with Y not working?” I always think of the “awesome quality” that everyone else can produce but I cannot.  Yeah, I’m being sarcastic here.    Today I got to deal with anything-but-perfect services that multi-million dollar corporations with big dev teams, QA teams, and a plethora of available beta testing users available and still have problems.

I guess for a solo act I’m not doing so badly.

At least today was not COMPLETELY wasted.   I did happen to stumble across a few-dozen douchebag hackers from India, China, and Russia that have been trying to brute force my server.  None got in, but it did remind me I need to get better security on my new server.    That is content for another article.    Maybe after I get some actual code written for Tagalong.  At this rate I’ll be lucky to get that done before WordCamp Atlanta next week.



 Alexa Traffic Rank: 260,950 United States Flag Traffic Rank in US: 87,219

link-icon Sites Linking In: 640



Authority icon

Technorati Authority: 106
Rank: 23373