List of WordPress sites managed by XWS

Read More…

I am not getting comment notifications from WordPress. Why?

Customers sometimes have problems associated with comment notifications from WordPress. That is, they have comments turned on, and they have their settings configured to send email when a new comment appears. But they don’t get the email.

And it might not be only comment notifications that don’t get through. Other WordPress notifications, such as new user registration, or password lost and changed, might not get through.

Unfortunately, there isn’t a simple answer. WordPress has its own built-in email feature. But that depends on the underlying email infrastructure provided by the host of your site. If there is something misconfigured in the email setup on your host, you might not get any email from WordPress.

Check out the following resources for more information on the problem and what to do about it:

  • Gravity Forms: Troubleshooting Notifications – This starts out describing problems that prevent GF notifications, then proceeds to outline more fundamental problems.
  • Yoast: Email Reliability – The Gravity Forms article refers to this article for more fundamental technical information about how email gets delivered. In particular, it provides info about SPF records and how they work.


What do I do about warning messages that say my email has been delayed or is undeliverable?

Some customers are getting warning messages about delayed or undeliverable email. Here’s a short explanation of what is happening.


Here’s an example message sent by one of my customers. Info in {} brackets have been deleted to protect the identity of the message.

Subject: Warning: message 1X4uTU-0001z5-E3 delayed 48 hours

This message was created automatically by mail delivery software.
A message that you sent has not yet been delivered to one or more of its recipients after more than 48 hours on the queue on {mail server}.

The message identifier is:     1X4uTU-0001z5-E3
The date of the message is:    9 Jul 2014 12:12:03 -0400
The subject of the message is: {Original subject of the message}

The address to which the message has not yet been delivered is: {target email address} (ultimately generated from {another target address})

Delay reason: SMTP error from remote mail server after end of data:
host [{IP address}]: [{IP address}] Our system has detected an unusual rate of unsolicited mail originating
from your IP address. To protect our users from spam, mail sent from your IP
address has been temporarily rate limited.

Please visit to review our Bulk
Email Senders Guidelines.

No action is required on your part. Delivery attempts will continue for
some time, and this warning may be repeated at intervals if the message
remains undelivered. Eventually the mail delivery software will give up,
and when that happens, the message will be returned to you.

 What’s happening

The mail server that is receiving the email, in this case a Google server receiving a gmail address, is complaining that your message might be spam. There is an “unusual rate of unsolicited mail originating from your IP address”.

But you are not a spammer, right! Why is it complaining.

You are probably using a shared server to host your email. You are sharing that server with many other customers. If somebody on the shared server has sent a bunch of spam, the IP address of that server might have gotten onto a black list or gray list. That means you, and other users of that shared server, are all judged to be potential spammers.

What can you do?

Unfortunately, there’s not much you can do to get a quick resolution. Possible next steps include:

  • Be patient and wait for it to clear up on its own. Notice that “Delivery attempts will continue…”
  • Submit a ticket to your hosting provider’s support line with a copy of the email. Tell them that you’re not responsible for any spam. The hosting provider will attempt to identify who the offending user(s) might be, stop the spamming, and then get their IP address removed from the black lists.
  • Send your email by way of a different mail server. You would need a separate account with a different hosting provider to make this work.

More info

Some mail servers are more diligent than others about trying to detect spam. Recent changes at Google have made gmail addresses more sensitive to potential spam. That’s good for gmail users, but bad if you’re trying to send an important email to a gmail address.

Often, the offending user on the shared host is not really a spammer. More likely, their hosting account was hacked by somebody who then used the account to send a bunch of spam. Moral of this story: Use strong passwords on your hosting accounts so you don’t get hacked.




How to Choose a WordPress Plugin

The guys at wpbeginner have a good checklist for choosing a WordPress plugin.

Automatic WordPress upgrades

Starting with version 3.7 of WordPress, the standard install includes a feature to automatically upgrade WordPress for third level changes. That is, if you’re running version 3.7.1 and WordPress releases 3.7.2, WordPress will automatically upgrade. It will not automatically upgrade to 3.8.

There is a way to turn off the automatic upgrade. I recommend that you leave the automatic upgrade in place, but I can turn if off if you wish.

Asepco Mixer Wizard

The Asepco Mixer Wizard is a custom application created by Expert Support for Asepco.

Version History

Version 1.0 was a javascript app created by Denny Brown. It was embedded in a static HTML site that Asepco was running at the time. (Dates?)

Version 1.1 was an update to the original executed by Kennan Rossi. Changes included updates t the algorithm for choosing the right PolyMixer, and new PolyMixer models.

Version 1.2 packaged the version 1.1 plugin into a WordPress plugin. No content changes were done. This enabled us to embed the MixerWizard into a WordPress page. Jaime Pina did the work.

Version 2.0 is a major upgrade associated with the introduction of the new AseptiMix agitator. Jan Clayton did most of the business analysis. Denny Brown and Jaime Pina made the coding changes.

Version 2 release notes

Version 2.0 – deployed 4/9/2014

  • Added template plugin code from iThemes Plugin Developer course. Activation, Deactivation, etc. hooks.
  • Added proper enqueue hooks for css and js files.
  • Fixed broken styling, especially on the results page. It now displays as intended.
  • Changed the mixer-wizard page, on which the input and output are displayed to use a full width layout.

Version 2-dev – created 4/9/2014

This version will be the development version for adding the AseptiMix mods.


How do I review or change what’s behind a short code?

It depends on how the short code was defined.

Many plugins create short codes to display their content. Then you just put the short code somewhere on your site. If it’s defined by the plugin, you would have to read the plugin code to see what’s going on. The name of the shortcode (i.e. the first thing after the [ character) might give you a hint as to which plugin defined the shortcode.

I use and recommend a plugin called Short Code UI. That allows you to create your own short code using the WYSIWYG editor, and place that content anywhere you want. If that is installed and active, look at the Short Codes menu item in the WordPress admin navigation.

I also recommend Shortcodes Ultimate. That is a package of 40+ shortcodes that are already defined for you. This plugin’s entry in the WordPress admin navigation is labeled “Shortcodes”, which is different from the one above, labeled “Short Codes”.

You can also define a short code in a file in your template called functions.php. If you had somebody else build your site, and you’re looking for the definition, it might be there. Go to Appearance > Editor, and select “Theme Functions (functions.php)” to review the contents of that file.

If it’s in the plugin code or in functions.php, you must be able to edit PHP code to make changes. Be careful! You can lock yourself out of your admin panel if you edit a PHP file and make a simple syntax error.

That’s why I use SCUI with my customers. It enables them to create a chunk of content and reuse it in many places, without requiring PHP skills.

Howto: Configure settings on a new live site

See also “Howto: Take a dev site live”.

Dev sites are usually configured to be less visible than a live site should be. This article provides a checklist of settings to review after a new site becomes live.

My Theme > Settings

  • Enable Google Analytics
  • Set favicon

Settings > General

  • Site name and tagline.
  • Email address.
  • Open registration?
  • Time zone.

Settings > Reading

  • Search engine visibility! Turn the checkbox off!
  • Quick check the other settings. They are probably right.

Settings > Discussion

  • Review all of these.

Settings > iThemes Licensing

  • Make sure your plugins and themes are licensed.

Settings > Floating Social Bar

  • Configure the social media items for this site.

SEO > Dashboard

  • Check, maybe set, Webmaster Tools settings. At least Google.

SEO > Titles & Metas

  • Check the settings on each of the tabs. Defaults are usually OK to start with.

SEO > Social

  • {{Add info here someday. I don’t know enough to have an opinion yet.}}

SEO > XML Sitemaps

  • Check the box to enable XML sitemap functionality.

SEO > Permalinks

  • Probably check the “Remove stop words from slugs.” That might have been done on the dev site already.

How to Add Events to The Events Calendar Plugin

The Events Calendar plugin by Modern Tribe makes it really easy to create, add, and manage events on a web calendar. Adding a new event is very similar to adding a new post.

After installing the plugin, you should see a new menu item, under Posts, in the left sidebar in the backend of your site. Click Events. Near the top there should be two buttons, “Add New” which takes you to the event editor, and “View Calendar”, which takes you to the calendar page on the frontend of the site. Click Add New.

The event editor should look a lot like the regular post editor. You have a title bar, where you can enter the name of your event, and a text area, where you can enter a description of your event. The event title will be visible when a visitor looks at the calendar page. Hovering over an event title will generate a popup where the event title and event description will be visible.

Below the event description text area, there should be various headings indicating different details about the event, such as time and date, location, organizer, website, and cost information. All of the information for these headings is optional. You can provide as much or as little information as you want.

All the fields, like time, date, address, etc, are pretty self explanatory, however one cool feature is the ability to save past locations. When adding the location details, you can select a previous location from the “Use Saved Venue” drop down menu. You can also enter a new location by filling in the event’s details below that drop down menu. New locations will automatically be saved and available for the next event you create.

After filling in the event details, you can tag the event just like a regular post and you can also organize it under a category, again just like regular posts. Organizing events into categories will allow visitor to focus on a specific type of event when viewing the calendar. The default calendar view shows all of the events from all of the categories.

Finally, you can press the “Publish” button near the top of the page and your event should now be visible on the calendar page.

Info for clients of Expert Web Support

During 2013, Jaime and I have been copying info from other sources to the Expert Web Support website. I think we now have enough worth-while content to start promoting the site to customers. This article summarizes the current state of the site as of December 2013. Read More…

Policy on backups

BackupBuddy is a comprehensive backup, restore, and migration tool. We provide BackupBuddy to all of our customers because we believe that every site requires a regular backup schedule. This page describes our policy on backups. Read More…