Fixed: XMLRPC Stopped Working After Switching To HTTPS

I’ve taken advantage of some down time over the past few weeks to migrate all of my sites over to HTTPS (a topic for another post).

However, one issue that I’ve run into is that XMLRPC stopped working on my WordPress site following my update to HTTPS. I didn’t change a single line of code, but started getting the following error:

“An error occurred – -32300:transport error – HTTP status code was not 200”

I tried increasing my php.ini, looking through my server logs, and Googling for solutions, but couldn’t find anything. There were a few people who seemed to have the same issue, but no solutions.

Finally, I came across this post on Stack Exchange that provided some code that did the trick:

The previous code I used was as follows:

include_once(ABSPATH . WPINC . ‘/class-IXR.php’);
$client = new IXR_Client(‘’);
if (!$client->query(‘wp.getCategories’,”, ‘username’,’password’)) {
die(‘An error occurred – ‘.$client->getErrorCode().”:”.$client->getErrorMessage());

The updated code which fixed the issue is as follows:

include_once(ABSPATH . WPINC . ‘/class-wp-http-ixr-client.php‘);
$client = new WP_HTTP_IXR_CLIENT(‘’);
if (!$client->query(‘wp.getCategories’,”, ‘username’,’password’)) {
die(‘An error occurred – ‘.$client->getErrorCode().”:”.$client->getErrorMessage());

I had no idea this file existed previously or why it works, but switching from class-IXR.php to class-wp-http-ixr-client.php seemed to do the trick.

The XMLRPC API for WordPress is poorly documented so hopefully this will help save you a few hours of digging around trying to solve this problem!

Why A/B Testing Is The Perfect Complement To SEO

If you’ve been in the online marketing space for a while you’ve probably heard of A/B testing. What is A/B testing, you ask? Optimizely (a leading A/B testing software company) defines the term as follows:

“A/B testing is a method of comparing two versions of a webpage or app against each other to determine which one performs better. A/B testing uses data & statistics to validate new design changes and improve your conversion rates.” definition via

A/B testing is web development methodology used by companies such as Amazon, Netflix, and many other companies to run tests on their sites and use data, rather than hunches or guesses, to determine how their websites should look and function.

What does all this have to do with SEO?

Most of what SEO’s focus on is driving traffic to webpages. We create content, optimize site architecture, and build links all in the hopes of driving more organic traffic to our websites.

However, we often ignore a critical part of web marketing: what the user does once they actually arrive at our site. If you’re running a business, it doesn’t really matter how much traffic you drive to a website if none of the traffic comes in.

That’s where A/B testing comes in. A/B testing can be used to test out different variations of your landing page to see which one converts better. A/B testing software displays the variations of your page at random to web visitors, and tracks how they behave on the page. Then it figures out with mathematical accuracy which version of your page converts better, and by how much.

A/B testing (which is one of the core technologies behind conversion rate optimization or CRO) is a great skill for SEOs to include in their toolbox since it magnifies the impact of the traffic that SEO brings in. Tripling the amount of organic traffic coming into a website can often be a daunting task, but tripling the conversion rate of a key page may be easier. And if you manage to do both at once, the benefits are multiplicative: you will see a 9-fold increase in sales and conversions.

Whether you are an SEO working at an agency, or in-house at a company, consider adding A/B testing in addition to traditional SEO skills like content marketing, on-page SEO, and link building. You’ll greatly increase your value to the business, which will lead to higher pay and more opportunities down the line.

How To Make The WordPress Twenty Eleven Theme Fully Responsive

Since the Google’s mobile update recently rolled out, I decided to update my salsa team’s website from the Twenty Ten theme which I’d been using to Twenty Eleven, which is very similar in terms of design, but more mobile friendly.

Aside from transferring over some of the customizations I’d made to the previous theme, I had to make a few tweaks to the theme to make it fully responsive.

If you are moving to the Twenty Eleven theme or are currently using Twenty Eleven and want to make it more responsive, here are the steps I took:

1) Make The Menu Responsive

The menus in Twenty Eleven don’t scale very well for mobile, especially if you have a lot of navigational items in them.

The solution I found was to install the nifty Responsive Menu plugin. This plugin creates a slick looking menu that opens up when you tap on it, similar to the Facebook app. It pretty much works out of the box, and the only thing I had to change was the title.

The next thing that I did was add the following CSS code under the @media (max-width: 450px) block of CSS code:

#access {
display: none;

This makes it so that the old navigation is hidden on smaller screens, leaving only the slick new nav.

2) Make Images and Videos Scale Properly

Images and embedded videos in Twenty Eleven scale properly in terms of width, but the height does not scale, making the images look squished. The solution is to add the following CSS code:

img, iframe {
height: auto;
max-height: 100%;
max-width: 100%;
width: auto;

This sets the height of images to “auto” so that they scale properly on mobile. Just add the above code to the bottom of the CSS file.

3) Fix the Padding on the Title

This one is optional, but in my opinion the default Twenty Eleven has way too much white space in the header, pushing all the content below the fold. The solution is to set the padding of #site-title to 1em from the default. Change it for both the desktop and mobile version of the CSS, and you’ll have a much narrower header so that readers can get right to your content.


I’ve been putting off moving my site to mobile for a while, but in this case the move to a mobile-friendly theme turned out to be a relatively painless process that took less than an hour. As you may know, I’m not a huge fan of responsive design, but in this case it was a quick and easy solution for getting my blog mobile.

Hope you found that helpful, and leave me a comment if you have any questions.

Facebook Like Drop March 2015

A few weeks ago Facebook announced that they would be changing the way Facebook likes are counted. Basically, the update makes it so that inactive accounts, that is accounts that have been voluntarily deactivated or memorialized accounts (deceased Facebook users), will no longer count towards the total number of likes for Facebook pages.

Facebook claims that dropping these inactive users from the Facebook like count will make the numbers more accurate, which does make some sense.

It looks like these changes went into effect sometime last week, as I’ve noticed a loss in followers (~300 total) from my own Facebook page as well as drops in some of the other pages that I follow:

Quintly Social Data

Facebook has made a number of pushes to remove spam accounts and inactive accounts in the past, but this is the first time that I have actually seen a drop on my own page, which was a little shocking when I first noticed it, even though I understand that the new number is more accurate.

Hopefully these users have just deactivated their Facebook accounts, and haven’t actually passed away. It’s weird to think that some of my fans may have dies since I started my page, although given my number of fans, it’s statistically likely.

Experiments In Adding Social Profiles To Google+

A couple weeks ago, Rand Fishkin tweeted out a link to new guidelines that Google published for adding social profile links to your Knowledge Graph card:

I took a look at the documentation, and the markup is pretty simple. It’s basically markup that you add to your main website (the one linked to your Google+ page) and you just add the additional markup to your social profiles in the following format:

<span itemscope itemtype=””>
  <link itemprop=”url” href=””>
  <a itemprop=”sameAs” href=””>FB</a>
  <a itemprop=”sameAs” href=””>Twitter</a>

Intrigued, I added it to several of the sites that I manage that display Knowledge Graph cards in the SERPs. About a week later, I saw the following appear for the KG card for my dance team’s website.

Knowledge Graph Card

You can see in the bottom left the new social link to our team’s LinkedIn page. But it doesn’t show any links to any of the other profiles I linked to.

It turns out that if you read the fine print in the documentation, Google will only display social links for *VERIFIED* profiles on social networks that have verification features. That means on sites such as Facebook and Twitter, your social links won’t show in the SERPs unless you have a magic blue checkmark. Also, since the markup needs to be on your official site, in its current form it will only work for Pages and not personal Profiles.

So that’s my experience so far with adding social links to Knowledge Graph cards. The other two sites that I added the markup to aren’t showing any social links yet, so I may need to revisit the code or it may be the case that I just need the social profiles verified.


A list of social networks that appear in Google Knowledge Graph cards, and which have a verification feature:

  • Facebook – Requires Verification
  • Twitter – Requires Verification
  • Google+ – Requires Verification
  • MySpace – Requires Verification
  • Instagram – Requires Verification
  • YouTube – Requires Verification
  • Pinterest – Does not appear in Knowledge Graph?
  • Tumblr – Does not appear in Knowledge Graph?

Allvoices Changes Their Terms Of Service (And It’s Hilarious)

This morning I received an e-mail from Allvoices about a change in their terms of service. Allvoices, if you are unfamiliar with them, is a content farm site similar to As you can imagine, content farms like these have been hit hard by Panda and they are all struggling to survive in the new Google world.

Allvoices is clearly struggling, because they sent out an e-mail today basically telling their users to piss off. Here’s the full e-mail:


Allvoices began as a way for citizen journalists to share their stories with a global audience. Our goal of giving everyone access to their own personal megaphone was cutting edge and changed the way people interact with events in their lives and the global community.

Over the years, we’ve continued to push the envelope and evolve. We’ve developed a unique array of tools writers have used to share their stories with the world, and we’ve introduced industry-leading writer payments and features.

As has been noted in previous community-wide emails, Allvoices will continue to evolve. The world of digital media is constantly changing and, in order to stay at the forefront, we need to change with it.

We’re very excited to announce that we will be launching a completely redesigned on August 18, 2014. The new will look a lot different. Not only will the visual design of the site change, but the community and the way we pay writers will change as well.

On August 18, 2014, we will be terminating the Allvoices Incentive Program ( At that time, we will add your August earnings to your balance as of July 31. If you qualify for payment according to the Terms of the Incentive Program, you will receive that payment. After that we will no longer be paying writers based on page views.

When the new launches August 18, existing users will have to apply and be selected by the Allvoices team in order to continue contributing on Allvoices. As part of this process, your existing content will be removed from Allvoices on August 18. You will still have access to all of your content until August 18, so please copy or back up any content you would like to save by then. If you need help with this, please contact

Thank you for taking the time to read this and for your contribution to Allvoices. Please let us know if you have any questions.


The Allvoices Team

It’s quite long and wordy, but the TLDR version would probably read:

Hey guys! We’re coming out with a cool new design on August 18! It’s going to look a lot different!

BTW, we will be terminating the incentives program, along with your account, and deleting all your content. You have 10 days to back it up if you want. If you want to keep writing for Allvoices (for free, no incentives) you will need to re-apply and be selected by the Allvoices team.

Have a nice day!

The Allvoices Team

Sounds like a great deal, right? I guess the moral of the story is to not trust your content on 3rd party sites like these (Squidoo also recently made some pretty restrictive changes) because they can decide to change their terms on a whim, delete your content, and stop paying you, and there’s nothing you can do about it.

The Canonical Is Not A Tag

I was trying to explain what a canonical tag was the other day, and I realized (not for the first time), that the canonical tag is not actually a tag. If you break down HTML syntax, it looks something like this:

HTML Syntax

If you apply that to the syntax of a “canonical tag”, which is usually of the form:

<link rel="canonical" href="" />

Then we see that the canonical is not a tag at all, but is actually the value of the rel attribute within the link tag. Similarly, SEOs often refer to the importance of using “alt tags” for images, when in fact what they mean to say is that you should use descriptive values for the alt attribute within image tags.

So the next time someone mentions adding a “canonical tag” to a site, correct them by pointing out that what they mean to say is that a link tag should be added to the header of the site, with a rel attribute whose value is “canonical”, that also contains an href attribute whose value is the canonical url for that page. It may just make you look smarter, or more likely, pedantic.

Adding The Vary HTTP Header In WordPress

Wordpress Plugin

I finally finished building a mobile site for Salsa Vida SF, which was definitely a learning experience. Since responsive design sucks I used dynamic serving for the mobile site (using the Any Mobile Theme Switcher plugin), and basically rebuilt the site from scratch, allowing me to completely re-optimize the site experience for mobile.

One of the things that Google recommends is adding the Vary HTTP header, which helps Google figure out that you serve different content based on the user-agent. This is something I’ve never had to do in all my years of web design, but luckily WordPress makes it super simple.

All you need to do is paste the following code into the funcions.php file of both your mobile and desktop theme:

function add_vary_header($headers) {
$headers['Vary'] = 'User-Agent';
return $headers;
add_filter('wp_headers', 'add_vary_header');

It took me a while to find the code snippet, but I was finally able to add it here.

Anyway, hope this is helpful to you and should be enough to get your dynamically served mobile site up-and-running!

Google+ Quietly Nofollows All Links

Google+ Links Nofollow

Google+ used to be a great source of dofollow links, but it looks like the party has finally come to an end.

When Google+ first launched, all of the links from the site were dofollow. This included all links from your posts, all links on your profile page, and all links in your bio and links section of the About page.

This started to change in February when Google+ nofollowed the links under the “Links” section of your profile page. At this point, any links that you included as part of your bio under the “Story” section were still dofollow.

Then in March when Google+ first launched larger images for shared links, they removed most of the dofollow links from posts in addition to making the images larger.

Posts shared on Google+ pages continued to have dofollow links in them within the page itself, but this was changed in April. The last holdout for dofollow links were the links in the “Story” section of your profile, but as of this week those links seem to be nofollow as well.

As of today, it appears that Google+ has followed the path of other social networks such as Pinterest (which used to have dofollow links) and nofollowed all their external links. Internal links that point to your profile or page are still dofollow, so there is still value in building up the authority of your profiles within Google+, but it is no longer possible to pass that link equity to external sites.

It was fun while it lasted, Google+. At least there’s still Tumblr as a source of dofollow links.

Why Amit Singhal’s Swiss Army Knife Isn’t Reassuring

Yesterday during the SMX West keynote, Danny Sullivan asked Amit Singhal (Google’s head of search) a question that has been on the minds of many webmasters lately: How is Google balancing the interests of users, who want answers immediately through Knowledge Graph, and the interests of webmasters, who provide the content for those answers.

What ensued was the most elaborate dancing around a question that I’ve seen since the last Presidential elections.
Swiss Army Knife
Amit likened Google to a Swiss army knife. Whereas previously Google just provided 10 blue links (the “knife”) they are improving their product by adding additional features that users want, such as weather results (“bottle openers”). Amit argued that although Google now provides more features, people will still visit external websites if they require other services (“screwdrivers”).

This analogy falls apart for several reasons. First of all, Google has been expanding Knowledge Graph and other search features to return results for more and more terms. To use Amit’s analogy, they are adding more and more tools to their “swiss army knife”. Websites about bottle openers now receive less traffic and could go out of business because Google now provides that service, and other content producers are fearful that Google will one day expand to include their niche as well.

Secondly, and perhaps more crucially, Google doesn’t even make bottle openers, it STEALS them from other businesses. Google doesn’t create the majority of “knowledge” in its Knowledge Graph, it takes it from other websites. It was funny to watch Amit preen on stage about how “awesome” Google is, when it is effectively just a scraper site that takes content from other people, and is increasingly biting the hand that feeds it.

One of the largest sources of Google’s Knowledge Graph is Wikipedia, and it will be interesting to see how Wikipedians react to Google’s increasing commercialization of their information. Wikipedia has been such a successful project because it has attracted thousands of idealistic contributors who work on the project for free. The website is adamant about not showing ads because it does not want to commercialize the content created by its free volunteers, but such a stand seems increasingly pointless if Google is scraping that same information so it can show ads on its own site. Wikipedia volunteers are effectively working for Google for free, so that it can sell more search ads.

For content producers, Amit’s talk gave little comfort that Google understands or cares about the needs of webmasters. Amit repeatedly stressed the importance of creating the best experience for its users, but didn’t spare many words for the content producers who are the backbone of Google’s product. In the hierarchy of Google’s constituents, users come first, advertisers come second, and content producers are a distant third.