Global Creations LLC Web Services and Publishing Wed, 12 Aug 2020 04:14:29 +0000 en-US hourly 1 Global Creations LLC 32 32 Duplex Printing with an HP-5200 Mon, 11 May 2020 00:52:57 +0000

I’ve been using a HP-5200tn printer to print The Mushroom Growers’ Newsletter for many years.  This printer requires a manual approach to duplex (double sided) printing.  First I print the number of copies I need of page one, flip those copies over, insert them in the manual feed tray (Tray 1) and print the second page.  It works ok, but it always leaves a toner smudge on the second page.  My printer tech (Brett at Kelley Connect here in Klamath Falls, OR) says this is from the blank side of the paper being rubbed by the printed side as the paper is drawn in from the tray.  He also said this is true of virtually any laser printer and there is a solution.  The solution is a printer that prints duplex automatically.  These printers print both sides of each piece of paper before drawing the next blank sheet of paper.  Thus, a printed side never touches a blank side of the paper.

Installing a Duplexer

There is an identical printer to mine, the HP-5200dtn, that also has a duplexer.  The duplexer can be added to my version of the printer, so I got one.  I found a refurbished one for $54.  Installing it amounted to removing a plastic cover plate from the back of the printer and shoving the duplexer into the slot.

Unfortunately the duplexer will not work unless it has more than 80MB of memory in the printer.  My printer had 64MB,  the standard wired in memory card.  I found a 256MB card designed for this printer for $10.  Installing the card is pretty simple:  slide the panel on the side of the printer backward until it pops out, put the card in the obvious card slot (mine was empty, yours may already have a card that will need to be removed if you are adding memory), lock it in, and replace the side panel.  When you plug in and restart the printer it should display the amount of memory on its display.  In my case 320MB.

Getting the Software Working

The printer needs to know that it has a duplexer. The HP Printer Utility can be used to tell it.  Since I don’t do Windows anymore,  here is the process for Mac OSX:

  1. Open System Preferences under the Apple menu
  2. Click “Printers & Scanners”
  3. Click on your HP-5200 printer
  4. Click “Options & supplies”
  5. Click “Utility”
  6. Click “Open Printer Utility”
  7. Click on “Duplex Mode”
  8. Check “Enable Duplex Mode”
  9. Close the utility and system preferences.

I did all this and still couldn’t get a PDF to print in duplex.  I started a chat with an HP “expert” on the HP website.   She told me there was no printer firmware for my operating system  (OSX 10.14.6) – even though I was running on very old firmware and I found an update on HP’s website (it was for OSX 10.11, but newer than the version I had). I never did figure out how to install the new firmware because none of HP’s online instructions work.  I’m still using the older firmware, 20060330 08.055.1. The chat concluded after she told me it was impossible to print duplex from my printer even with the duplex installed (??).  Then, a convenient network error cut her off.

How to Print in Duplex

After getting cut off,  I tried printing the chat transcript from Safari and lo and behold, the print dialog offered the option to duplex print and it worked perfectly.  I subsequently found that it seems to work like that with most software. Note,  that it may be good idea to restart your computer to be sure all the software knows what’s going on.   Here is what I have tested so far:

  • Apple Pages – check “Two-Sided” in the print dialog box
  • Safari – check “Two-Sided” in the print dialog box
  • Chrome – check “Two-Sided” in the print dialog box
  • Google Earth – check “Two-Sided” in the print dialog box
  • Libre Office – check “Two-Sided” in the print dialog box
  • MS Word – get into the Layout section of the print dialog and turn on duplex printing there
  • Acrobat (PDF) – From the print dialog box, get into the “Layout” pane where there is a drop down labeled “Two-Sided”.  Choose the binding option that works for your project.  That’s “Long-Edge Binding” for a typical 8-1/2X11 document.
  • QuarkXPress – Choose “Printer” at the bottom of the Quark print box to open the standard print dialog box.   Check “Two-Sided” and choose which side the binding is on in the print dialog box

My first attempt with Quark resulted in the back of the page being upside down.  This is because the printer defaults to “Long Edge Binding”, so 8-1/2X11 pages print like a book.  I was printing on 11X17 with a horizontal layout.  Thus, I needed to set it to “Short-Edge Binding.”  By the way,  the User Guide for this printer says at one place that 11X17 will work in the duplex while in another place it says it won’t work.  It works.


Yes, one can automatically print two-sided with a duplexer and extra memory added to an HP-5200.  And, no,  you can’t trust HP “experts” to have a clue.




]]> 0
Fixing Jams in an HP-5200 Printer Wed, 06 May 2020 00:27:37 +0000 The HP-5200 has a series of ‘flags’ that track the paper through the printer.  If the paper fails to trigger one of these small plastic parts, with the correct timing, the paper will stop and a jam error will be provided.

There are a three flags, that I know of, in this system:

    1. There is a gray metal flap immediately behind the set of white rollers as one looks into the front of the printer with the cartridge removed.  Lift that flap to find a black piece of plastic (the flag) sticking up in the middle of the printer.  If you move the flag with your finger in the direction of paper movement (into the printer) then release it,  it should spring back to a vertical position.
    2. There is a similar flag in the middle of the printer just before the paper gets to the fuser assembly.  It too should swing back into place if you push it forward and release it.
    3. There is a third flap associated with the back of the fuser unit.

I have experienced two jam situations with these flags.

The first involved flag number 2.  Somehow the flag was forced out of position.  Fixing the problem involved putting the flag back on track using my fingers.

The second, and much more difficult, jam happened when the paper stopped just as it was coming out of the fuser.  Part of the toner fused properly, but part did not.  The line between those two situations is exactly where the paper stopped. After a lot of exploration, my printer tech found that he could hold down the flag (number 3) and the paper would smoothly move through the printer.  Clearly the flag was functioning ok.  The problem was that a small piece of plastic had broken off of the fuser assembly.  Apparently this snagged the paper, broke the timing and stopped the paper when it hit the flag.  The solution was to replace the assembly.  I found one for $130 from U.S. Printer Company – Altru Print RM1-2522-AP (RM1-3007) Fuser Kit.

Installing the new fuser involves:

    1. Remove the gray plastic cover that extends beneath and upward on either side of output tray, by inserting a finger in the hole and gently pulling it out and off.
    2. Remove the paper output tray by loosening two small screws, one left, one right.  The right screw is visible in the back of a square opening.  The left screw is not visible unless the tray is open.  It is under the white plastic arm that holds the tray.   This allows the tray to be lifted up and off of the machine.  If it doesn’t easily slide upwards,  loosen the screws more.
    3. Remove the old fuser assembly by removing two screws, not the obvious two, but two on the far left and right that attach the metal flap on the fusser assembly to the metal flap on the printer.  Once these are removed,  the old assembly can be removed and the new assembly inserted.
    4. Replace the two screws on the fuser assembly
    5. Put the output tray back into place and tighten the two screws that were just loosened
    6. Replace the gray cover removed in step 1.
]]> 0
Specifying Posts for the Recent Posts List Sat, 29 Jun 2019 06:57:54 +0000 The Problem

My client has a widget on his home page that was created with the Divi Sidebar module.  It is set to display the ten most recent posts.  Now,  he wants to display two of those posts in a special block in the center of the page, to the right of the list of ten posts.  I could just use a text module to display links to the two posts in question.  However, he does not want those posts listed in the widget.  I could add code to functions.php that would remove those posts from the standard list.  In combination,  this is not an elegant solution.  It would require a manual change in functions.php and in the text block that displays links to the two posts every time he wanted to change those highlighted posts.  Further,  that would also remove those posts from the category being used to display all the posts.  In this case:

The Solution

Recent Posts Widget Extended

The solution is a plugin called Recent Posts Widget Extended. I installed and activated it.

Next I created a new category called “Main News” and assigned the two posts I want to display to that category.  Next,  I created a new widget area called “Home Page Main News” at Appearance > Widgets.  Finally, I turned to Recent Posts Widget Extended.

First I attached Recent Posts Widget Extended to the new widget area I just created.  Then it was a matter of choosing the correct settings.  In this case,  I limited the lists to posts in the “Main News” category and let it display thumbnails.  By default,  the thumbnails are 45px by 45px.  They are created by cropping the featured image to show just the center of it.  This worked ok in this case as I just wanted to separate the post titles with a colorful bullet, of sorts.

Installing Using the Divi Sidebar Module

To get the widget to display,  I went to the home page, added a Sidebar Module to the appropriate location.  I then assigned the content to be the “Home Page Main News” widget area. Finally I modified the text to be red and larger with drop shadows in the ‘Design’ tab of the module settings.

This completed part of the installation.  The center section of this row on the home page now boldly lists the two desired posts.  All I need to do to change the posts listed there is to set or unset the “Main News” category for the posts.

At this point,  the two highlighted posts are still listed in the list of recent blog posts in the left column.

Modifying the List of Recent Blog Posts

To remove the unwanted posts from the most recent list,  I again turned to Recent Posts Widget Extended.  First I created another new category, “Home Page News.”  Then I assigned that category to all the posts that I want to appear in the list of recent blog posts.  That’s no big deal because I’m only listing 10 posts there.

Finally I created another home page widget area and used Recent Posts Widget Extended to include only those posts. Then I used a Sidebar Module to place the widget on the home page.  This is all the same process used to create the main news list described above.


This is still not a terribly elegant solution, I’d rather be able to just list posts in the ten-item list that aren’t on the two-item list in the widget configuration.  Nonetheless, it works and it only involves setting the correct categories whenever a new post is added. You can see the final result on the Unicorn Bags website, unless the owner wants to change things again.



]]> 0
php.ini for WordPress and Divi Wed, 29 May 2019 04:45:52 +0000 The php.ini settings provided by your website host as defaults may not be optimal for use with WordPress and the Divi theme. If your global php.ini file has settings lower than shown below,  adjust them upward to these.  Your WordPress experience should improve. WordPress also wants to use ImageMagick, a PHP extension, to allow you to manipulate images.  The hosting company I use has ImageMagick installed, but it is not activated by default.  To activate it,  I need to use the last line in the following lines that go in the php.ini file:

post_max_size = 64M
memory_limit = 200M
upload_max_filesize = 64M
max_execution_time = 300
max_input_vars = 3000
extension =

WordPress also likes you to use the most recent version of PHP.  You should be able to change the version used by your host in the host’s control panel.  For more on WordPress settings, sign into your WordPress installation and choose Tools > Site Health and also check out Divi > Support Center.  The Divi > Support Center page will show the above recommended settings if your site is not already set up that way.  If all is good,  the System Status section will say: “Congratulations, all system checks have passed. Your hosting configuration is compatible with Divi.”

If you make all these changes and the Divi Builder won’t load, you probably have a plugin conflict.

Apparently when WordPress is using Imagick, uploads will sometimes fail with a general ‘HTTP Error.’  If that becomes a problem,  you can remove that line from the php.ini file.  If you have multiple WordPress installations on the same domain and imagick seems fine on some and not others,  you can add the following code to the functions.php file in your WordPress theme’s child theme:

function wpb_image_editor_default_to_gd( $editors ) {
$gd_editor = ‘WP_Image_Editor_GD’;
$editors = array_diff( $editors, array( $gd_editor ) );
array_unshift( $editors, $gd_editor );
return $editors;}
add_filter( ‘wp_image_editors’, ‘wpb_image_editor_default_to_gd’ );

This code overrides the php.ini setting for a single WordPress installation to use the GD image editor.

]]> 0
Generating a Proper WEBM File in OSX Fri, 03 May 2019 07:23:51 +0000 The Problem

Web browsers will play either MP4 or WEBM formatted video files, or both.  Thus it is important that both formats be available.  In the Divi theme, from Elegant Themes, the video modules ask for both formats.  I found that the MP4 format would display properly in the backend as well as in the front end of the website.  However,  the WEBM version did not appear at either end.

The backend issue is a result of my use of Safari on the Mac.  It wants to download webm video rather than play it, so it won’t display on the backend of Divi.  If that’s

situation, you’ll have to live with it or come up with a solution.

There are several programs for Mac-OSX including Any Video Converter, Miro Video Converter, EasyHTML5Video and VLC that promise to produce a proper WEBM version of video files.  I found that none of them produced a fully functional WEBM file, particularly if the video was shot vertically. Vertical video would get rotated to play back flat and these applications don’t seem to offer an option that will allow the video to retain its original dimensions. I set off on a quest to find something, anything,  that world work.  This is the result.

Homebrew Package Manager

The first thing I did was install Homebrew.  It’s a package manager that helps install applications.  Here’s how to install it:

  1. Open the Terminal application.  It is typically in the Utilities Folder within the Applications Folder on your system drive. It willl present a black screen with a prompt.  The prompt looks something like:  yourcomputer:~ yourname $
  2. Paste this into Terminal after the prompt:
    /usr/bin/ruby -e “$(curl -fsSL”

This will download the Homebrew files and install them on your Mac. It will also install some other files like the Xcode Command line system.  As the installation proceeds, you will see information on the screen explaining what is happening.  At various points, it will ask for your password.  That’s the password you use to log into your computer.

When the installation is complete you will see something like this:

==> Installation successful!
==> Homebrew has enabled anonymous aggregate formulae and cask analytics.
Read the analytics documentation (and how to opt-out) here:
==> Homebrew is run entirely by unpaid volunteers. Please consider donating:
==> Next steps:
– Run `brew help` to get started
– Further documentation:


ffmpeg is an application that will convert audio and video files from one format to another.  We installed Homebrew to make installation of ffmpeg easier.  The installation process uses the Terminal application and the Homebrew software we just installed.  Get Terminal open and paste the following command there:

brew install libvpx

libvpx is a library that ffmpeg uses. The above command installs it. Next,  paste the following command into Terminal:

brew install ffmpeg

This will install ffmpeg and a lot of libraries and other pieces that make it work.  Once these steps are complete you can convert file formats.

Making a Conversion

In this example,  I’ll be converting an MP4 file to WEBM.  Again, the Terminal application is used.

This is the basic command that is needed:

ffmpeg -i source-video.mp4 -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis destination-video.webm

The catch is that the two ‘video’ files need to be your video.  Here’s how to get that going:

Type this (or copy/paste):  ffmpeg -i

Then drag your source file to the command line. You will see a lengthy path to the file.  Be sure there is a space after it.

Next, type this: -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis

Be sure there is a space at the end of that, then drag your source file to the command line again.  Backspace to delete the mp4 suffix on the file and backspace more to rename the file, then be sure the suffix is webm rather than mp4.

When this is all in there correctly it will look something like this:

yourcomputer: ~ yourname $ ffmpeg -i /Volumes/yourvolume/yourfolder/yoursubfolder/yoursourcevideo.mp4 -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis /yourvolume/yourfolder/yoursubfolder/yourdestinationfile.webm

Hit the return key and ffmpeg will run.  Depending upon the size of your source file,  it could take awhile.  ffmpeg will keep you informed about what’s happening.

Converting WMF to MP4

A similar process can be used to convert a WMF (Windows Meta File) video to an MP4 video:

ffmpeg -i input.wmv -c:v libx264 -crf 23 -c:a aac -strict -2 -q:a 100 output.mp4

]]> 0
Laser Printer Puts Out Black Pages Fri, 15 Mar 2019 04:24:53 +0000 Background

I’ve been using an HP5200tn laser printer for many years.  I just received some rebuilt laser cartridges and put one into the machine to test it.  I like to keep some on hand and I test them upon receipt so that I don’t discover they are faulty after they can no longer be returned.  I printed a page and it came out completely black.  Ok, says I,  a faulty cartridge.  I put the cartridge I had been using back in and it too printed black pages. Since the original cartridge didn’t work either,  I decided it must be something else.

Naturally I started looking around  the web to see how others resolved this issue.  I couldn’t find much resolution.  I did find a sensible suggestion.  The cartridge wasn’t getting power, so it was attracting toner to the entire page rather than only to the words that were to print.  With printers like this there is an electrical connection between the printer and the cartridge that provide power so that static electricity can draw the toner particles to the correct position.

The problem could have been in the power supply or the contacts might be dirty, but those possibilities didn’t seem likely because the original cartridge had been working fine.

The Solution

On this particular printer,  the electrical connection is on the left side of the cartridge.  It looked fine so I poked around inside the printer.   I bumped a metal spring-loaded part that snapped back out of the way of the cartridge track.  Both cartridges then printed just fine.  When looking into the printer the part looks like a metal loop.  It will be sticking out from the left side the printer in front of the fuser assembly.  Gently press it to pop it back in place.  This requires very little force!

The Cause

The new cartridge had a drum cover, a part that opens as the cartridge slides into the printer, that wasn’t as tight against the body of the cartridge as it should have been.  A best I can tell,  that led the cartridge to catch as I slid it into the machine and moved the aforementioned part so that it blocked the cartridge from seating properly.  Replacing the cartridge with the original didn’t help because that part was already out of place.

Once the part was back in its proper position, the cartridges could seat properly.  I was particularly careful inserting the cartridge that caused the problem in the first place.

]]> 0
Divi Slider Height Sat, 09 Feb 2019 05:35:59 +0000


The Divi WordPress theme from Elegant Themes is really a development system that includes a wide range of customizable modules.  I ran into a problem with one module in particular, the Divi slider module.   Out of the box, this module is designed to create slide shows as might be done with Powerpoint.  You can set a background (graphic or color) for each slide, create text that shows up on the right side of the slide and add graphics that show up on the left side of the slide.  You can add as many slides as you want to each slider.

I wanted something much more simple. All I needed was a slider that would display a series of photos with navigation controls (left/right arrows and the dot navigation at the bottom).  That can be easily done with the slider module except that the module bases its height on the text on the slide and I didn’t want any text.  To avoid that,  I provided no information for the slide except my photos as backgrounds.  As a result the slider defaulted to long and short, clipping my photos. I had one slider that displayed several rifles photographed horizontally.  Since they were long and short, the slider worked perfectly.  I had other photos that were more square and they got clipped.  Unfortunately as I write this,  Elegant Themes has not provided any way to directly control the height of the slider.

Generally the quickest way to get solutions to problems like this is to use Elegant Themes 24/7/360 technical support system, so that’s what I did.  First I searched the forum area where users help each other.  There I found the basic code shown below.  Then I opened a conversation with tech support.  The great people there advised me on the best way to set this up.  This is what I learned.

The Solution

The solution, as it is so many times when extending Divi’s capabilities, is custom CSS.  Divi offers the ability to add simple CSS directly attached to individual slides.  What I needed was CSS that could be attached to the entire slider.  The CSS that did the job was this:

.custom_slider .et_pb_container {
height: 70vh !important;
.custom_slider.et_pb_slider, .custom_slider.et_pb_slider .et_pb_slide {
max-height: 70vh;

This code just redefines the slider height.  The two properties, height and max-height, as in  height: 70vh and 
max-height: 70vh, control the size of the area within which the photos appear.  Max-height overrules height.  70vh means 70% of the viewport height.  The viewport is defined relative to the parent’s properties.  I found 70% allowed my entire photos to appear while leaving an appropriate border around them.  You can experiment with these numbers as you wish. Zero makes the photos disappear.  

Note that the class  “custom_slider” doesn’t exist anywhere until I create it and apply it.  Since I want to apply it to specific sliders,  I need to apply it to the slide at issue.  That is done by creating a custom class.  This is a simple as entering “custom_slider”, without the quotes, in the slider settings at Advanced > CSS ID & Classes > CSSClass.

The CSS code itself, as shown above, can go into a child stylesheet, but I prefer to keep it in the database by entering it in Divi’s theme options (Divi > Theme Options and Custom CSS at the bottom of the page).


Developers seem to have a lot of problems with this aspect of the Divi slider.  This simple solution should resolve a lot of those issues.


]]> 0
Changing WooCommerce eMail Subject Sat, 19 Jan 2019 02:31:54 +0000

The Problem

One of my clients uses the emails from WooCommerce to run his business.  He uses the admin interface some, but not much.  Because he relies so heavily on the emails,  he wants specific information in the subject of the email.  That way he can decide how to deal with it just by looking at the subject in his list of incoming mail.

Originally, and by default, the subject for a new order looks like this:

[Client Company] New customer order (5327) – January 17, 2019

He wants something like this:

12/10/2018      clientcompany      Customer order  (5306)     Joe Blow   Company

In order to get as much real information as possible on the subject line,  I proposed this:

12-10-2018 clientcompany – Order 5306 – Joe Blow – Company

If you only have one online storefront, you don’t really need the name of the store in the subject.  My client has a few storefronts, so he needs to know which one is the source of the order. Note that the date uses dashes rather than slashes.  The dashes are a standard format in PHP.  You will see where that came from below.

Built in Options

WooCommerce has some options for modifying the subject from within the admin interface.  Find it at: WooCommerce > Settings > Emails. Then click on the name of the email you want to modify – in this case “New order.” The default for ‘Subject’ looks like:  [{site_title}] New Customer order ({order_number}) – {order_date}.  You can’t directly edit the default, but you can type over it.  Unfortunately the only options for data are site title, order number, and order date.

Near the bottom of the ‘New order’ admin page is a section title ‘HTML’ that provides an option for editing the email template.  This template is the layout for the body of the email and doesn’t provide a way to modify the email subject.

How to Make the Changes

So far, I haven’t mentioned a method that will do what we want.  WooCommerce does have a way that is noted at: Unfortunately you will need to be able to read the code to figure out what to do to make  work.  Here’s how it works and what to do:

Create a Child Theme

First, be sure you have a child theme set up.  If you don’t know how to do that, there are WordPress plugins that make it easy.  For example Child Theme Configurator. Your child theme folder is located among your WordPress files at /wp-content/themes/yourtheme-child.  The child theme folder holds files that you don’t want to change when you update your main theme.  Wordpress checks these files and uses them instead of, or in addition to, the standard files for your theme.  If you modify the basic theme in some way, this is where you put the modified files.

Create a Child functions.php

We are going to modify the functions.php file from the base theme we are using.  We do that by adding a new function to an empty file that we save in the yourtheme-child directory.  When WordPress runs,  it uses all the functions in the functions.php file in the base theme plus all the functions in the child functions.php file.

Content for Child functions.php

The WooCommerce documentation mentioned above gives you the code for your new function.  First,  however add this to the top of your new child functions.php file in a separate line so that WordPress knows it is looking at php code: <?php  Then copy the code from the documentation and paste it into your new functions.php file.

At this point the content of your functions.php file looks like this:


* goes in theme functions.php or a custom plugin
* Subject filters:
* woocommerce_email_subject_new_order
* woocommerce_email_subject_customer_processing_order
* woocommerce_email_subject_customer_completed_order
* woocommerce_email_subject_customer_invoice
* woocommerce_email_subject_customer_note
* woocommerce_email_subject_low_stock
* woocommerce_email_subject_no_stock
* woocommerce_email_subject_backorder
* woocommerce_email_subject_customer_new_account
* woocommerce_email_subject_customer_invoice_paid
add_filter(‘woocommerce_email_subject_new_order’, ‘change_admin_email_subject’, 1, 2);
function change_admin_email_subject( $subject, $order ) {
global $woocommerce;
$blogname = wp_specialchars_decode(get_option(‘blogname’), ENT_QUOTES);

$subject = sprintf( ‘[%s] New Customer Order (# %s) from Name %s %s’, $blogname, $order->id, $order->billing_first_name, $order->billing_last_name );

return $subject;

Note that the lines with asterisks (*) are comments and don’t affect the code.

Modifying the Code

We want to modify the email subject.  What appears in the subject is what is stored in the variable $subject in this statement:

$subject = sprintf( ‘[%s] New Customer Order (# %s) from Name %s %s’, $blogname, $order->id, $order->billing_first_name, $order->billing_last_name );

This code produces a subject that looks like this: [Client Company] New customer order (5306)  from Name Joe Blow

The sprintf statement includes five elements separated by commas.  The first is a string that incorporates the other elements into it using %s to load the other four elements in order.  Those other four elements are variables pulled from the information about the order that is stored in your database.  In my example:

$blogname = Client Company

$order->id = 5306

$order->billing_first_name = Joe

$order->billing_last_name = Blow

We still want to use all these variables, but we also need to use the name of the company ordering the items and the date of the order.  We can get the company name, if any, from: $order->billing_company.

We get the order date with this code: $order->get_date_created()->format (‘m-d-Y’).  By default this returns both the date and time, something like this: 2018-12-10T05:36:25+00:00. Fortunately WooCommerce has a function set up that allows us to format the date that is returned.  The format (‘m-d-Y’) code tells WooCommerce to return the date formatted like 12-10-2018, without the time.  For the tech details see:

Revised sprintf Statement

To get the result we want, the statement needs to look like this:

$subject = sprintf(‘%s %s – Order %s – %s %s – %s’, $order->get_date_created()->format (‘m-d-Y’), $blogname, $order->id, $order->billing_first_name, $order->billing_last_name, $order->billing_company);

Producing, for example:

12-10-2018 clientcompany –  Order  5306 – Joe Blow –  Company


I don’t get into code very much anymore, so I had to experiment a bit to get the desired result.  My client’s website is very actively making sales and I didn’t want to break it while messing around.  I have a duplicate of my client’s site on my server that I can use to test things without affecting his store.  Turns out that was a good idea because I was able to crash my playground site just by messing up the code in the sprint line. If you need to make a backup site on a separate server see: (Changing Your Domain Name and URLs).

In  a nutshell, we aren’t moving the site, just copying it.  So,  don’t change anything on the original site.  Move all the WordPress files to a directory on your server, export the database from the client installation, create a new database on your server and import the data.  Edit wp-config.php on the new server with the new database name and login credentials.  Nothing will work yet because the database points to the old server in numerous places.  I used the Search and Replace Script to clean up the database so that everything works like the original site.

]]> 0
Scam Emails Thu, 29 Nov 2018 01:10:31 +0000

The Problem

One of my clients recently noted that some of his clients were getting emails with this content:


Subject: Balance Invoice

would like you to confirm to me the status of your owed and unsettled payment if there is any. Please reply back to us immeditaly with the aggregate amount owed with the corresponding due dates for payment and invoices respectively .

I expect to read your immediate response and compliance to this message and I shall appreciate your obedience accordingly.

A. Real Person
Marketing Manager

[ An image of the client’s website header.]
I’m no expert on hackers and what they are up to,  but here is what I suspect is going on with these emails:

Scammer Collected Data

The scammer probably has a robot program that scans through websites collecting email addresses and links (this is called a harvester). It creates a database that has the original website, like, with any email addresses it found there, plus the web links to any other websites it found listed on your website. Then it scans the website links it found on your site (like where it repeats the process. Their database would link any emails found on to and vice versa. Once set up, a robot like this can run without any human intervention across millions of websites.

Then, they just build a query from their database that creates and sends an mail to all the related emails they found. Only one query is needed for the millions of potential emails that could be sent (involving all the different websites they scanned) and after the query is created the rest is all done without human intervention.

Keeping eMail Addresses From Harvesters

If your WordPress website is set up professionally,  it will automatically code email addresses, so a harvester can’t find them. My client’s website is set up this way.

The scammers associated emails with his website when they combed through the websites that he has linked on his site. They know your website is so they can just add “accountant@“ to the front to create that fake email address.

But Why?

One easy thing to do would be to make the email look like it is coming from to the recipient, but when they reply to the message, it actually goes to the scammer. I’m not sure why they ask for the information noted in the email.  They could have an automatic reply set up that asks for other things like credit card info or login info to Again, all without human intervention.

If someone is ignorant enough to give the scammer useful information, that information can be sold to other scammers or used directly.

For a relatively small amount of human effort, they can steal millions of dollars from credit cards. In some cases they might be able to log into a website and use the server to send out more spam emails – at someone else’s expense – or get into the customer database and steal credit card info there. That’s why the websites we develop do not retain any credit card info – all that goes directly to the credit card processor’s servers.

If a scammer can get an administrator’s login to a website, they can take full control and do anything they want with it. Sometimes they leave the website so it works ok, but get into the server and use it’s computing power to do various bad things – like cause or other major websites to crash.

What to Do

Be sure your WordPress website is protected by  the Wordfence Security plugin and has coded email addresses.    Wordfence prevents bad actors from doing nasty things to your website.  Still, there are no guarantees if some outlaw government decides they want to hack you.

If the scammer actually has the image link to your WordPress header in their database, you can mess with the emails by changing that header file:

  • First, open your website, right click the header graphic, choose open in a new tab and note the URL associated with the original header.  That URL will probably match the URL associated with the image in the email.
  • Second,  upload your original header again (or whatever image is at the URL in the email),so it gets a different URL.  Then replace your old header URL (or the file at the email image’s location) with the new one.  If you are using the Divi Theme, look for “Logo” under Divi > Theme Options.  You can upload the new header there or paste in the link to it.  Your website should now look the same as it always has.
  • Third,  redo you header graphic so it looks something like this:

  • Forth, upload the revised header file, with the same name as the original to the same location as the original using your FTP software (e.g. Filezilla).  That is,  replace the original file at the location determined in step 1 with the file as modified in step 3.

New emails coming to your associated email addresses from this scammer will now have this graphic at the bottom instead of your logo.

Beyond that, just train your people to recognize scam emails and promptly delete them.  Here are some things that reveal an email to be a scam:

  • When you examine the ‘From’ email address, it doesn’t match what is displayed in the email.  You can look at the ‘raw source’ code behind the email via a menu option in your mail software.
  • The content of the email has misspellings (like ‘immeditaly’ above) and/or odd grammar that one might expect from a sender with English as a second language.  In the above example,  the information request doesn’t make any sense.  Why would someone ask for “owed and unsettled payment if there is any”?  Further,  most correspondents will not ask for your ‘obedience.’
  • When you hover your cursor over a link in the body of the email,  the link doesn’t match where you would expect it to go.
  • Notice whether the email is generic or specific.  In the example above,  it is generic.  It doesn’t mention anything about you, about the sender or about the information they want from you.  It could go to anyone doing business with any company.
  • Legitimate companies don’t ask for your personal information or login credentials.  If they are already doing business with you,  they already have the information they need.
  • Look for attachments.  Often these emails will include a Word Document (.doc or .docx),an Excel spreadsheet (.xls or .xlsx)  or an executable (.exe).  These files can contain all kinds of nasty things and set them loose on your computer.  Unless you are expecting such a file from someone you know,  don’t open it.  Even if it is from someone you know and you aren’t expecting it.  Don’t open it until you confirm it with them – but not by replying to the email.  Scammers, as in the example above,  try to make it look like the email is coming from someone you know.
]]> 0
Making a Website GDPR Compliant Mon, 04 Jun 2018 06:31:17 +0000

Making a Website GDPR Compliant

The Issue

The European Union created a policy called the General Data Protection Regulation (GDPR).  GDPR gives web users specific rights including the ability to delete any information your website has collected about them.  There are lots of web pages that discuss the legal requirements for bringing a website into compliance with GDPR, but few the spell out how to do it, exactly – sort of.

The GDPR went into effect on May 25, 2018 and already Google and several other large corporations have been sued for violating the regulation.  There are huge fines involved, so those companies spent a couple years setting everything up to be sure they were compliant.  I spent a few days sorting out what I could do with the WordPress websites I manage.  I’ll tell you what I did,  but there is no way I can guarantee you will end up in compliance with the GDPR.  You should, however, be in a much better position that if you do nothing.

General Background

The essence of what you need for compliance is a Privacy Policy that explains how you are interacting with the individual that is looking at your website.  You need to explain what kind of information you are collecting, how you are using it, what kinds of cookies you are using and so on.

Next,  you need a way to tell people exactly what information you have about them and how they can delete it from your system,

Finally,  you should have a Terms and Conditions page that explains what is expected of the users of your website.  This page should give your lawyers something to work with if someone uses your website inappropriately

Terms and Conditions

The best approach is to take a look at the terms and conditions associated with other websites.  You are welcome to take a look at our Terms and Conditions and modify them to fit your needs.  If you have a lawyer, perhaps they can write something up for you.

Once you have your Terms and Conditions page written, go ahead and publish it.  You will probably want to check your menus to see if it shows up automatically.  If it does,  you may want to remove it from whichever menu it appears on.  We’ll put it on a menu somewhere when we have the other pages ready.

Contact Page

You probably already have a contact page with a form that people can use to send you an email.  The GDPR requires you to inform people as to why you are asking for the information requested, or required, by your form.  The idea is to minimize the information you are collecting to that which is required for your website and company to properly function.  After you get rid of all the cells in your contact form that ask for information you don’t really need, add something like the following below the form:

We ask for:

  1. your name, first name will do, so we can distinguish you from other users of the email address you provide.
  2. your email address, so that we can respond to the message you provide.
  3. a message, so we can properly respond to you.

By clicking “Submit” you are confirming that you understand what will happen with your information as explained in our Privacy Policy and you are providing this information voluntarily.

If your website allows people to create an account, you will need to do something similar for each page that requests information. The GDPR Framework plugin offers additional information on how to improve compliance of your contact form.

GDPR Framework Plugin

I looked at several GDPR compliance plugins and decided to use the GDPR Framework plugin.  It was developed with the help of European Union lawyers and will automatically generate the basic pages you need on your website.  The developers also provide  a lot of documentation if you want to really dig into the details.

Here are the steps:

  1. Download, install and activate GDPR Framework
  2. Work through the GDPR Wizard reading all the instructions as you go. You may save and leave the wizard at any time and return to it at Tools > Privacy to continue as needed.
    a. Generate the Privacy Policy template and edit it as needed.  The template suggests places where specific information is needed.  Check other websites to see what they included in their privacy policies so that you will get the idea and can develop something that will work for your website.b. If you are not in the EU and are in an English-speaking country, use Ireland as your Supervisory Authority.  Otherwise,  use the authority in your EU country or an authority that speaks your language.

    c. Generate the Privacy Tool page.

  3. add something like this to the bottom of the Privacy Tool page: “Note: If you are not logged in, we ask for your email address, so we can determine whether we have any information about you.  We will immediately send you an email with a link to access your data.  That link will be valid for 15 minutes.”
  4. Review each of the pages to be sure they contain the information needed.
  5. Publish the new pages (again, check to see if the automatically show up in a menu.  If so,  you may want to remove them from that menu for now.
  6. Tell WordPress (Version 4.9.6 or better) where your Privacy Policy is located Settings > Privacy
  7. Add your Privacy Policy, Privacy Tools, and Terms and Conditions to a menu (Appearance > Menus).  I’ve been adding these to the bottom menu on my websites.

Cookie Notice Plugin

The GDPR or a prior requirement, I’m not sure which – or maybe both, requires you to tell your visitors that you are using cookies and get them to say that’s ok.  All Cookie Notice does is put a check box associated with your message so that the user either clicks the box or continues using the website.  Here are the steps to using Cookie Notice:

  1. Download and activate the Cookie Notice plugin by dFactory.
  2. Open the plugin settings and
    1. Provide a message to appear next to the check box, like “We use cookies to give you the best experience on our website. By using this website, you consent to the use of cookies.”
    2. Put the appropriate response on the button, like “OK”.
    3. Enable the Privacy Policy link so the user can quickly find and review it, should they choose to do so. Give the button a name, like “Read More”, and set it to look to your privacy policy.
    4. Enable to reload page after cookies accepted and enable cookie acceptance when user scrolls 100 pixels.  You are not allowed to force someone to accept cookies,  but you are required to give them the option to do so.  These settings make that painless for your users.
    5. I set the message/buttons to appear at the top of the page.
    6. Choose style settings and colors to fit on your website.
    7. Save the changes and check your website to see how it looks and works.

New WordPress Features

WordPress 4.9.6 and newer contains some features specifically designed to help with GDPR compliance.  Wordpress now recognizes your Privacy Policy and Terms and Conditions pages and automatically has two check boxes to the form wherein comments are submitted to your blog, like this:

Comment Check Boxes

WordPress also adds a link to the Privacy Policy on the form that new users of your website fill out in order to get an account on your website – if you have your website set up to accept members.


I am not an expert on GDPR and I am not a lawyer.  The information provided here is intended to help me remember what I did and help you get started with GDPR compliance.  As I learn more and experiment with various setting on various websites,  I plan to add to this post.  If you need more details on GDPR, use the documentation provided with the GDPR Framework plugin.

]]> 0