Author Archives: Charles Strickler

Setting up Contact Form Goals on Google Analytics

  1. Create a thank you page.  Take note of the page title and the URL.  Use a unique title if setting up multiple forms so its easy to find this page.  For example ‘Thank you requesting a consultation’.
  2. Go to the advanced tab of the Yoast portion of the page and exclude the thank you page from the sitemap and set it to noindex.
  3. Go to Forms > Selected Form > Confirmations – Select a page confirmation and choose the newly created thank you page as the confirmation.
  4. In Google analytics go to the Admin menu and select Goals > Custom Goal > Destination.  Use the partial URL of the page include leading and trailing slash. (/thanks-quick-contact/)

WordFence Configuration

WordFence is a security plugin that we install to all our sites before launch. It is a very powerful tool with many capabilities so this post should help optimize the plugin to fully utilize the features.

Once WordFence is installed, you have to go to Options link under the WordFence button in the Dashboard menu. WordFence will ask you to enter your email and then you can proceed with the configuration.

Basic Options:

  • You should uncheck the Enable Live Traffic View because it will tremendously slow down your site load-up speed.
  • For the to “How does Wordfence get IPs:” you want to select the “Use PHP’s built in REMOTE_ADDR…” option from the drop-down.

Advanced Options:


Uncheck the “Alert when someone is locked out from login” and “Alert me when someone with administrator access signs in” options.


Make sure all options are selected


The following image will show you how I configured the firewall options. You can choose to change the options to better suit your needs and you can also choose to block the users or crawlers that break rules rather than throttling them.


Login Security Options:

  • Change the drop-down values  for the “Lock out after how many login failures” and “Lock out after how many forgot password attempts” options to 5.
  • Change the “Amount of time a user is locked out” to 30 minutes.

Other Options:

You want to enter your site’s IP Address into the “Whitelisted IP addresses that bypass all rules:” field.


Getting special character HTML to show up in HTML code

If you type in something like & copy ; and then toggle back to the visual editor it will convert this to ©

Some older computers will not be able to interpret this symbol and show a question mark it its place.  To prevent this from happening we found this code on Stack Exchange.

// Custom configuration for TinyMCE
function wpsx_54398_configure_tiny_mce( $initArray ) {

    // Add some common entities to the default array (copy, reg, trade, service mark, euro)
    // The odd entires are the entity *number*, the even entries are the entity *name*. If the entity has no name,
    // use the number, prefixed with a hash (for example, the service mark is "8480,#8480").
    $initArray['entities'] = $initArray['entities'] . ',169,copy,174,reg,8482,trade,8480,#8480,8364,euro';

    return $initArray;

add_filter('tiny_mce_before_init', 'wpsx_54398_configure_tiny_mce');

Getting images to float without extra margin or page breaks

By default the WordPress visual editor will ad ‘p’ tags to all of your text and images. When you are floating an image the p tag around it can create more margin than you want, and it often ads an extra ‘br’ tag to the code which can cause spacing problems.

Add the following code to the functions.php file to prevent the IMG tags from being wrapped in a p tag.

Thanks to for this code.

function filter_ptags_on_images($content){
   return preg_replace('/<p>\s*(<a .*>)?\s*(<img .* \/>)\s*(<\/a>)?\s*<\/p>/iU', '\1\2\3', $content);

add_filter('the_content', 'filter_ptags_on_images');

Setting Up Site-Search on Google Analytics

Google Analytics Site Search

  1. After logging into Google analytics, you want to select the profile on where you would like to track the searches.
  2. Click on the admin tab on the top right of the Navigation menu and select the View Settings option under View Column (first option in the column on the right)
  3. Scroll down until you see the Site Search Settings header and turn the button on to allow site search tracking.
  4. In the input field below labeled “Query parameter”, please enter the query parameter for your searches on your site.
    • Just make a test search on your site and look for the letter after the “?” in your URL
    • Enter that letter into the input field(usually the letter “q” or “s”….The WordPress Default is “s”)
  5. You can also track category searches if you please by turning on the Site search categories button and entering the category parameters in the input labeled “Category Parameters”.
  6. Now just Click Save and you are all set!

Website Launch Checklist

Before you launch

Update all plugins and WP core.

Before you run your testing make sure you update everything so you don’t have to retest it again later.

Cross browser testing

Cross browser testing should be done on all page templates (not necessary for all pages) on the following browsers/devices.

  • Internet Explorer 9, 10, 11
  • Latest Version of Firefox
  • Latest Version of Chrome
  • Safari running on a Mac
  • iPhone
  • Android Phone
  • Use Safari Developer mode to test Ipad view.
  • Use to check responsive view on major mobile screen sizes.

Make a backup of the old site

If it was a WordPress site make sure to grab all of the files in wp-content and a copy of the database.  If it was an HMTL site you can download all of the files and zip them up.  If you do not have FTP access to the old site use the program to download a copy of the site.


Check your 404 page by entering a random URL.  You should also perform and check the search template to make sure they look ok.

Before you switch the nameservers or change the @ record put the old nameservers or the old IP address into the password file in case you need to revert back to the old site.

Launching the site (After the DNS switches over)

You will need to change the site address in the wp-config.php file to reflect the live URL.  Do NOT include a trailing slash on the live domain.

Add the website to InfiniteWP by installing or deactivating and reactivating the IWP client plugin.  Create a backup and confirm that it worked before running search and replace.

Install the Better Search Replace plugin.  Do a search in all areas of the database for the development URL and replace it with the live URL.  Be careful not to include a slash on one URL and not the other.  See screenshot for recommended strings.

Screen Shot 2014-04-02 at 11.43.07 AM

Check common theme template files for hard coded links.  Note that Godaddys find and replace featured on managed wordpress often misses certain links, for example email links or sub domain links.  You should still run a find and replace on Godaddy managed wordpress.

Go to settings > reading and uncheck the box to allow search engines to crawl the website.  Use screaming frog to check of any broken links.  Fix any that you see.

Gravity Forms settings

If you are going to set up Google Analytics goals make sure you create a thankyou page and set the confirmation to go to the thank you page.

Set the send to email address to the client, we also BCC our info@ address so we have an extra copy of any forms.  Set the Send As address to the wordpress@ or other generic email that the client uses.

Change the subject of the form to include the name of the person who filled it out the form, not the title of the form itself.

Send a test message to the client and ask them to “forward this message back to me to confirm receipt”.  If they do not receive the form tell them to check their spam.  You may need to set up SMTP email if it is not getting through.

Install and Configure Security Plugin

Follow the instructions on the iThemes Better WordPress Security post.

Website Setup for SEO clients

Yoast Settings

Configure the SEO settings to no index sup pages of archives.  No index any post types or formats that are not being used as independant URL’s.  For example we may have a post type for SLIDES but these URL’s are not supposed to be viewed individually.  You should also noindex attachments.

You can noindex post formats, and tags if they are not being used.  You can disable the SEO meta box on any post types that are set to noindex.

301 redirects

Install the Simple 301 redirects plugin.  Do a search on Google for to return a list of all URL’s indexed by Google.  Go through each URL and create a redirect to a similar page on the new website.  If a page no longer exists then create a redirect to the home page.

Setup Google analytics.

Create a Google account. See this post for more details. as well as this post for setting up Goals.

Be sure to share Google analytics with the SEO account manager (charlie.strickler) and the info@boom email address.

Setup Webmaster tools

Add a site to Google WMT and share with the SEO account manager (charlie.strickler) and the info@boom email address.

Create a Microsoft account and add a site to Bing webmaster tools.


Add to tracking spreadsheets and monitors

Add site to technical spreadsheet on Google docs. Add to backup schedule on InfiniteWP, Add to uptime monitor on Infinite WP, Add to update group.

Final Steps

Delete any development plugins.  This often includes search and replace, regenerate thumbnails.  If you are moving the site from a different host you can delete the old development files.

Run screaming frog.  Examine the results for broken links, hashtag links, and any URL’s that still point to the development site (check external links as well).

Download W3 total cache or use infinity cache for WP Touch websites.  See this post for how to configure W3 total cache. –

Run a sitespeed test using  Add any issues with page load speed to your notes about the launch.

Make a backup on Infinite WP called “PostLaunch”.

Add to Hosting and Updates spreadsheet.

Configuring W3 Total Cache

We leaned heavily on advice from WP beginner in this article –

Basically they recommend that you enable Page Cache and Browser Cache which are enabled by default.  You do not need to enable database caching or object caching or minify.

Browser caching is enabled by default but there are some settings to enable in browser caching.

  • Disable cookies for static files

How to setup on click goals in Google analytics

Use the Google Analytics Event Tracking Code Generator to create the onclick goal. Note that if you are logged in and the analytics code is hidden then clicking the link will produce an error. To test the goal make sure you are logged out.

Screen Shot 2014-03-27 at 5.00.13 PM

Click to call codeNote that we are only adding one category name when we setup the goal but we fill out several more variables in the onclick code. We do this because the onclick code requires a category, an action and a value.

Goals do NOT register immediately so after you set one up you will have to click on the phone number, then check a few days later to make sure it was recorded.

Be sure to note if the site is using an old classic analytics code you should upgrade to universal analytics.

How to Setup Google Analytics

<?php if ( is_user_logged_in() ) { ?>

<!--the analytics code is hidden because you are logged in-->

<?php } else { ?>
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),

  ga('create', 'xx', 'auto');
  ga('send', 'pageview');


<?php } ?>

The first step to setting up a Google Analytics Account to first setup a Gmail account for the client (IF you or the client has not already done so).
Once the Gmail account has been created, you want to go to and register using the account you just made or the existing Gmail account that the client would like to use.
After registration, you will be sent to a screen that displays your UA code or Tracking Code. Copy and paste that code to a text editor because you will need that in a minute.

Now go Install the Google Analytics Plugin to WordPress and activate it. Once you activate it, you will need to navigate to the Settings menu for the Google Analytics Plugin and enable the following settings:

  1. Manually enter the UA Code. This is were you enter that UA code that you had copied and pasted in the previous steps
  2. Advanced Settings
  3. Logged in users under the Custom Variables menu
  4. The above settings will look like this:
  5. Finally change the ignore users drop-down selection, under Advanced Settings, to Editor.

Click the Update Settings button and then click the Allow Tracking button when the notification pops up.

Running backups on Infinite WP

The backups on Infinite WP are really easy. You can select backup now from the site menu on the left of the page, give the backup a name, and press the backup button. For many sites you may not want to backup all your websites files because many of them don’t change very often. For example the wp-includes and wp-admin folders can easily be downloaded.

wp-admin, wp-includes

Keep in mind that you may have more than one website folder on your webserver and you should also ignore a secondary website and do that backup separately.

Screen Shot 2014-03-27 at 4.52.36 PM

We usually only keep 3 backups on file because most web hosting companies do a daily backup of all their sites that we can retrieve in an emergency. We run our backups before and after we update our WordPress core and plugins so usually our backups are like this.

  • PostUpdate – older
  • PreUpdate – before the most recent update
  • PostUpdate – After the the most recent update

Set the # of Backups to 4 when you run the backup and it will delete older backups from the folder automatically. Unfortuneately InfiniteWP does not seem to remember what number you set this to so you will have to change it every time you run an update.