Domain changed!

So I changed the domain to WPressureCooker.com.

I thought I’d share how I did it to show how to do it so you don’t have to worry about folks trying to get to your site through the old domain and getting a 404/”file not found” message.

The first thing I did was some research to find the best way to do this.

Quick disclaimer: This may not be the best way for your site.  But this worked for me.  Be sure to back up your database and files before proceeding.

I followed the Yoast.com site’s advice and created a robots.txt file, but ended there because I was not moving any files and he was giving instructions for an Apache server where I was using a Windows server hosting plan.

In my Godaddy hosting account, I set the new domain (wpressurecooker.com) to point to the same folder wordpressurecooker.com is pointing to, and waited for the status to go from Pending to Setup.

Logged in my site’s admin and went to the General settings.  There I changed the Blog URL and Site URL to the new domain name.

I installed the plugin, Domain-Change by Soz which creates the 301 Redirect for you that automatically redirects folks from your old domain to the new.  So if someone comes to your site by a link that goes to a specific article, the page comes up under the new domain.  Even my shortened Pretty Links worked.

I deleted the robots.txt file from my site.

Next came the stat tracking.  I use Google Analytics.  I was hoping that the 301 redirect will take care of most of the problems, but just in case, I made a change to my Google Analytics account and the Google Analytics for WordPress by Joost de Valk settings.  There is the possibility I did this wrong, but in Google Analytics for wordpressurecooker.com I set it to track “multiple top level domains”.  I noticed the code (that you would paste in if you didn’t use the plugin) changed where _gaq.push([‘_setDomainName’, ‘none’]); so in the plugin settings, I set Domain Tracking (which sets _setDomainName) to “none”.

I also have WordPressurecooker.com registered under Google’s Webmaster Tools.  That required me to verify the wpressurecooker.com domain, then for wordpressurecooker.com, I clicked “Change of address” under “Site configuration” I set the New URL for wordpressurecooker.com to wpressurecooker.com.  In the settings for wpressurecooker.com I set the sitemap URL.

It took me a lot longer to type this all out than to make the changes, so I think you will find it pretty easy.

So did I miss anything?

I need to change my domain name

According to this, I need change my domain name because it contains the word “wordpress”.

I understand why, but I don’t have to like it.  I mean, c’mon… WordPressureCooker is pretty clever, IMNSHO.

But I can change. If I have to. I guess.

But to what?  According to the article, I can use “WP” in my domain name.  I have already registered “wpcooker.com” and “wpressurecooker.com”.  I like “wpcooker.com” because it’s shorter, and “wpressurecooker.com” because it includes “pressure cooker”.  Perhaps I can just use wpcooker.com as a URL shortener for my site.

What do you think? Which domain name should I go with? Please leave your suggestions in the comments.

WordPress 3’s New Menus

WordPress 3 has brought forth some new tricks like the customizable navigation menus which make it very easy to set up your own menus using a GUI. You can define and drag-and-drop the order of the menu items, and WordPress will output them as an unordered list (<ul><li>…</li></ul>).

Rather than try to explain it myself, just head over to Justin Tadlock’s post about the menus.

One missing piece was filled by John The Developer where I needed to add a custom class to the last menu item.  I was displaying a menu horizontally and using “margin-right” to space the menu items (inside <li> tags) apart, but I didn’t want that margin on the last item.  Here is John’s 8 lines of code solution.

Then in my CSS file, I defined “last-item” class as:

li.last-item {
     margin-right: 0 !important;
}

I did try using the pseudo-class of li:last-child which worked fine in Chrome and Firefox, but it did not work for Internet Explorer because IE has yet to recognize pseudo-classes.

Update Bonus: Want to add some collapsing menu goodness? Check out Daneomatic.com’s post.

Gaps in emailed HTML table rows

This post has nothing to do directly with WordPress, but this is a little tip I need to post to remind me how I fixed this particular problem.

Because of restrictions in certain email clients, I still rely on HTML tables for newsletter layouts.  When I cut up an image and place the image slices in individual table cells, the result looks fine in a browser by itself, but when sent and viewed in Gmail, there is a noticeable gap between the rows.

The browser’s element inspector says the row height is computed to 2 pixels larger than the image size despite entering the correct height in the row and cell.

I found entering the line-height attribute set to zero fixes the problem.  In each row tag enter

style=”line-height:0;”

so your row tag looks like <tr style=”line-height:0;”>

You will also need to add line-height attribute to a <p> or <span> tag around your text so it’s not all bunched up together.  Setting line-height to equal or greater than the pixel height of your font-size should do it.

FeedWordPress making invalid RSS?

As I mentioned in my last post, I’m using FeedWordpress to syndicate affiliate links.  I turned on the option to have the permalink to the affiliated articles to go straight to the affiliate link instead of the page (that may be bad for SEO, but one less click for visitors).

The problem was the RSS feed became invalid because of the affiliate link.  So I need to encode the link.  So on line 590 of feedwordpress.php, I changed

$uri = get_syndication_permalink();

to

$uri = esc_attr(get_syndication_permalink());

The esc_attr function is a built in WordPress function that converts certain characters to their HTML encoded equivalents. Such as “&” becomes “&amp;”.

Everything seems to be working fine now.

LinkShare AdMix and SEO Friendly Images plugins

If you are a LinkShare affiliate, there a great plugin called LinkShare AdMix that uses the RSS feeds of retailers you have partnered with to automatically insert posts of each item in the feed.  I had to do 2 things to get it to work:

  1. Line 111 of feedwordpress.php, I had to change $fwp_path = ‘feedwordpress’; to $fwp_path = ‘linkshare-admix’; because the code was not finding the install folder correctly.  Changing the folder name from “linkshare-admix” to “feedwordpress” may have worked too, but there is already a FeedWordpress plugin (which this plugin is based on) out there and should you need to install both for some reason, you don’t need them butting heads*.
  2. Be sure you copy the included Magpie RSS  files into your wp-includes folder to get everything to work right.

I noticed that the images the Linkshare feed was posting were not SEO’d – no alt or title tags.

Enter the SEO Friendly Images plugin which adds alt and title tags for you based on the posts title and keywords.  But it didn’t work.

Usually plugin problem lie in an incompatibility with another plugin, so I disabled a plugin one at a time to determine which one was causing the problem.

Guess what?  It was the LinkShare AdMix plugin.

I wondered if the original FeedWordpress plugin had the same problem, so I disabled the LinkShare AdMix plugin and installed the FeedWordpress plugin.  Same problem.  I remember seeing filters were called in the source code, so I searched for “filter” and found a commented paragraph about preserving the feed and not allowing other plugins to change it.  The 2 offending lines of code followed, and I promptly commented them out:

//add_filter(‘the_content’, ‘feedwordpress_preserve_syndicated_content’, -10000);
//add_filter(‘the_content’, ‘feedwordpress_restore_syndicated_content’, 10000);
Update: Yes, I totally missed the built-in option to “Expose sydicated posts to formatting filters” under Syndication options > Post & Links > Formatting >Formatting filters. *facepalm*  But this only works for the FeedWordpress plugin.  LinkShare AdMix plugin does not have this option, so you will need to comment out the 2 lines of code above to get it work with the SEO Friendly Images plugin.
Commenting out that code worked.  Just remember you will need to do this again when the Linkshare Admix plugin gets updated.
In the end, I think I will stick with FeedWordpress instead of LinkShare AdMix because I get more fine tune control and easier to add RSS feeds.
*I think installing both LinkShare AdMix and FeedWordpress would not workout because then need different versions of Magpie RSS.  Some recoding would be required to get them to play nice.

Pretty sneaky, sis. The games spammers play.

Spammers are a crafty bunch.  You have to be vigilant to keep them at bay.

I do use the Akismet spam filter, but I still have incoming comments held for moderation just in case.

Here are the four things I look for:

1. Is there a URL?

If there is a URL, I check to see if the site relates to the topic, or if it is trying to sell something. Usually you can tell by just looking a the web address itself.

Many times I just use CSS code display: none; or will comment out the code that makes the URL/Website input field.  I find it unnecessary.  They can always just paste a URL in the comment box.

2. Name and E-mail address

Does the name match the email address?  For example, if the name is “John Smith” and the email is “harryjones@yahoo.com” then there is a good chance the comment is spam.

3. The Comment Text

Is the comment ambiguous?  Could it be applied to anyone’s comment on about any blog?

4. Date of the comment vs Date of the post

If the post or the last approved comment is at least a month old, then there is a chance a spambot just visited the site.  I have recently started closing comments after 14 days; this setting is under Settings >Discussion.

For example, a comment held for moderation showed up today for one of my client’s blogs:

Really nice blog you have there. Some of your posts really impressed me. I will definitely visit your blog again!

The comment seems like a nice thing to say, but it is very ambiguous.  It could apply to my client’s blog, my blog, or a blog about housebreaking puppies.  That’s one.

The name did not seem to match the email address. That’s two.

Is there a URL? No.

Was the comment left on an old post? No.

With 2 marks against it, should that be enough to mark it as spam?  For this example, yes.

Here is my reasoning: I think the spammer is checking for 2 things…

Checking for open commenting.

This spammer is first knocking on door, not to see if anyone is home, but see if the door can be pushed open.

Checking for “Comment author must have a previously approved comment”.

This time the door did not open, but now the spammer will see if anyone will answer the door and let them in.  If  “Comment author must have a previously approved comment” is checked on, and their comment is approved, they can now comment again without hindrance (until they are caught).

Do you have a favorite spam blocking plug-in?  Let me know in the comments.

But, uh, you only have 14 days to let me know.

Must-Have Plugins according to John P.

John Pozadzides (aka John P.) is one of those guys who knows a lot about blogging and WordPress.  If my head wasn’t stuck in the sand of work so much I may have heard of this guy sooner.  On Jan 30, 2010, he gave a talk at the Dallas/Fort Worth WordPress Group.

[viddler id=4f54d588&w=437&h=290]

If you don’t have an hour and 30 minutes and just want the list of plugins he mentions, I have provided them below.  Click the titles to go to the download pages for each plug-in.  In some of the notes, I have provided times in the video he talks about that subject so you can jump ahead in the video if you want to hear more detail.

Woopra

Tony Cecala, the gentleman who introduces John P., states John is part of a team that developed a stat-tracking service called Woopra.  This is not one of the plugin John P. says you need, but he does show how he uses it throughout the presentation in relation to the other plugins he uses.

There is a free plan that is capped at 30,000 page views and data retention for 3 months.  If you want more, you will need to pay a monthly fee for the upgrades.

You can get the WordPress plugin here, or in your WordPress admin plugins area, search for “woopra”.

Pretty Link

This is a URL shortener.  John P. calls it Pretty Link Pro and says it is not free, but there is a free version called Pretty Link.  The idea is that by using services like Bit.ly or TinyURL.com, you are giving away your traffic.  Pretty Link will make shortlinks for your domain and tracks clicks.

XML Sitemap Generator for WordPress

Creates an XML sitemap you can use with Google Webmaster Tools and Yahoo Site Explorer to help those search engines index your site so your site will wind up in more search engine results.  Plus it notifies Google, Yahoo, and Bing when you publish a new post.

Amazon Associates

If you mention a product (that’s not competing with your product) that is available on Amazon.com, why wouldn’t you include a link to it?  It provides value to your readers, and you will get a commission for the sale.  This product looks for links to Amazon.com in your posts and adds your referral code.  Of course this requires that you are signed up as anAmazon Associate.

There are actually quite a few plugins available that do this.  It depends on your need.

WP Admin Bar

Oh my goodness, I wish I knew about this one earlier.  When you are logged in as an admin on your site, a tool bar is added to the top of the page that gives you the same functionality as the WordPress.com hosted sites.  You will have faster access to all the functions (including plugins) that you have in normal admin sidebar.  You won’t have to type “wp-admin” every time you need to access the backend of your blog.

YARPP

… stands for Yet Another Related Posts Plugin.  Uses tags (you are using tags, right?) to create links to other posts on your blog that are related to the post on that page.  Related posts help keep your site visitors on your site longer.

An attendee asked if it was better to add related links to the top of the post rather than the end or side.  John loved the idea of putting them at the top in case in case the visitor did not find the article interesting before they scrolled down enough to see the related link.  In my own experience reading blogs, if I see a related link that looks interesting, I will open the link in a new tab to read after I am finished reading that page or decide to stop reading because the article does not interest me.

Database Backups

Take it from someone who has lost his database, you need to back up your WordPress database!  John P. suggests WP-DBManager which not only automatically emails a backup to you, but also optimizes the database.  However, I had some trouble getting it work with my Godaddy Windows shared hosting server set up. (Helps if I actually read the install instructions. *facepalm*) I normally use WordPress Database Backupwhich also emails the database backup file to you, but does not optimize the database.

Update April 21, 2010: I still can’t get the WP-DBManager backup to work right.  It says it can’t find the MySQL dump path – probably because I’m running it on a Godaddy Windows server.  So I’m using WordPress Database Backup for the actual backup and WP-DBManager for optimization and repair tasks.  They play nicely together.  In fact if you go the WordPress Database Backup option page, you can schedule the backup according to the WP-DBManager’s backup or optimization schedule!

WP Super Cache

“Every single person in this room should have this plugin on every single website you have.”  I sadly do not.  I better get busy.

What it does is speed up the access to your site by taking some of the load off of your web server by creating static pages of normally dynamically created web pages.  Static pages will come up faster than the dynamic pages.

Clean Options

1:07 Removes any records left behind in the wp_options table of your database of plugins you have removed.  You click the button that says “Find Orphans” and a list of entries show up with check-boxes and links to look up the entry in Google to see what it is.  You just check the boxes of the entries you know are safe to remove.  When I tried it the first time, an option for the DB Manager appeared (good because I removed it) and options for YARPP were in the list (bad because YARPP was enabled).  Make sure you backup your database before using this.

Delete Revisions

1:08 Like it says, it deletes the revisions of your blog posts and pages to save room in your database. Again, make sure you backup your database before using this.

WP Search

1:09 Integrate Google Search.  John says it is called WP Search, but I couldn’t find it.  My search engine seems to be working fine.

No Adverts For Friends

1:35 You can set it up so regular visitors never seen an ad, but traffic coming from a search engine does.

I have not tried this one yet.

All In One SEO Pack

Other Notes I got from the video

  • Content is king. Interesting, authoritative blog posts take time to write. One of his most popular posts that he wrote in 2008 and still get 2,000 hits a day took 20 hours to write.
  • Video counts.
  • Pictures count. In your descriptions in Flickr, include link back to your site.
  • Audio counts.
  • Stop trying to make money.
  • Add e-mail feeds.  I use Feedburner to send out email digests of my posts for free.  You just need to sign up with Feedburner, set up Feedburner to use your feed, then provide a link for visitors to sign up to be emailed.
  • Use descriptive file names for your images. Use the alt tags for your images.
  • 0:52 John talks about a test he did using videos and images of Lady Gaga. When using a gallery, instead of the image linking to just the image file, link to a page with the larger image embedded.  If a visitor lands on this page, you need to give that visitor somewhere else to go.
  • 1:03 Site speed matters. Use a Firefox plugin called Firebug and Page Speed by Google to test your site’s speed.  “Faster load speeds equal more Google traffic.”
  • Use grid hosting
  • 1:05 Moderate spammy comments ruthlessly
  • Integrate Google Search – WordPress’s built-in search stinks.
  • 1:10 Quotes Mark Hopkins: Sites with less than 50,000 page views a month should focus on growing their audience, not direct monetization.
  • 1:12 Google Adsense and alternatives: BuySellAds.comAdBrite.comClicksor.com,Chitika.com.  He mentions he will publish a post about these, and he did here.
  • 1:14 Affiliate Programs like CJ.comLinkShare.com, and iTunes.com.
  • 1:15 SEO stuff: Themes. Stop looking for free themes.  He shows a slide with the following tips:
    • Pay for a reputable theme with support
    • No spammy footer links (I just remove those links in the code.)
    • Content loads before the sidebar loads
    • Well commented PHP and CSS
    • Light, fast, and standards compliant
  • John mentions a theme he uses called Rapid-Access which is available here
  • 1:17 SEO stuff: Keywords – put them everywhere: image filenames (use dashes between keywords), image alt tags, image title tags, link title tags, meta-tags (using All In One SEO plugin).
  • 1:18 Social Media Primers
  • 1:19 Guest blog to build reputation and inbound links and make contacts with new bloggers.  Use MyBlogGuest.com
  • 1:19 Crazy Readers – but the good kind.  Some people have the habit of google searching for the same page instead of bookmarking.
  • 1:25 Q&A
    • Monetize RSS feeds? Yes.
    • Uses plugin to add related posts to RSS feed
    • Does RSS replace a newsletter? No.  Write a special newsletter that only email subscribers would get.
    • WP Super Cache work on dynamic pages? Yes, embedded items not cached.
    • Facebook Connect plugin slows down the site? John verifies it does slow down sites.
    • Commenting services like Disqus and IntenseDebate.  Fundamental problem: you are turning over your intellectual property to a third party.
    • Social media: use a share button? Pretty Link Pro adds this.

5 things that will help to increase traffic to your site

  • Social media – Facebook contributes 50% of incoming traffic for websites.  Twitter is only 42%.
  • RSS feeds are important.  Enable the full text feed in your WordPress settings.
  • Kick-a** content.
  • Pretty Link Pro
  • Meet-ups.  Link to your peers.  Start your own meet-up groups.
  • Use site-maps.  Wait a minute, that’s six.

Thanks to my brother Ryan, for sharing the link to Episode 16 of Wealth Nation which contained the video.  Be sure to check out the audio podcast, too.

Godaddy SSL Adventure

Failure is a great teacher.

I have a client that will need a secure certificate to they can accept credit cards.  (If a client does not already have a merchant’s account, I usually suggest starting with Paypal or Google Checkout.)  So I bought the low-end, one-domain certificate and assigned it to a shared hosting account at Godaddy.

I had no idea that for over 72 hours, I would be locked out of the hosting control panel.  Thankfully I still had FTP access.  But I lost the WordPress schema from one of my databases (good thing I had a backup).  The A records for domains not registered by Godaddy had to be changed.  Most of my file permissions were changed to read-only which is a problem for WordPress sites.

And to top it off, the secure certificate is not going to work the way I wanted it to with the domain for which I bought it.  This part was my fault for failing to do more research before buying.

Still, I would have liked to have some warning first that the server would be upgraded to accommodate the SSL certificate.

Lesson learned: if a client needs an SSL certificate, I will set up a separate web hosting account under Godaddy.

Postie and Gmail/Google Apps

My Google Apps account was not working with the Postie plugin.

I got this error message:

Unable to connect. The server said – POP3 connect: Error
Try putting in your full email address as a userid and try again.

My settings were:

Mail Protocol: POP3
(The only other option IMAP/IMAP-SSL/POP3-SSL had a message saying it was not available.)

Port: 995

Postie Time Correction: –6 hours

Mail Server: pop.gmail.com

Mail Userid: <email address>

Mail password: <password>

I did a little Google digging and found the solution in a comment at the very bottom of this page at Economy Sized Geek.

All I had to do was add “ssl://” to the beginning of my mail server to become “ssl://pop.gmail.com”

After making the change, I was able to connect to the mail server. Thank you, lewen7er9.