It was April 2008 when I last switched platforms for my web site and blog. I had previously been using SubVersion – that’s the platform the blog was on when it started in June of 2005. I moved to the Community Kit for SharePoint: Enhanced Blog Edition. It was based on SharePoint 2007 and allowed for a few more features than the out of the box blogging framework for SharePoint. It was enough to help me make the switch. Back then I had a few hundred posts. Migrating this time from SharePoint to WordPress, I had 724 blog posts to migrate. I thought I’d share some of my experiences and collect up some tools for others who are making the leap.
Leaving SharePoint for Blogging
While I still do a large amount of SharePoint and Office 365 work, I felt like the time had come to take a different approach to my public web site. While I could do my SharePoint public sites easily, it wasn’t easy for others to work with and given my need to delegate more and get others involved, I had to face the facts that this meant that I needed to find platforms that were easier for others to manage.
Microsoft has been sending a clear message that public web sites aren’t the focus for SharePoint or Office 365 for a while. So it’s really natural that I started looking for other options.
What I found was that WordPress turned out to be inexpensive, well known, and had a thriving community of people who are adding on to the platform. That made it a natural place for me to move my web sites to.
One of the unexpected benefits that I received from the move is that some of the manual work that I was doing to promote my blog posts on social media (Twitter and LinkedIn mainly) is now being handled automatically by the platform. It’s great to get workload off my plate – and the plate of my assistants. I’ve also got the ability to schedule my posts. I typically am working a few weeks to a month in advance of when a blog actually posts. This is just to help everyone get a predictable stream of content but allow me to deal with the ebbs and flows of life. For instance, I actually went live with WordPress on July 25th but it will be more than a month before this blog post makes it to the blog.
Migrating the Blog
The “big rock” for the migration was the blog content. There were so many posts with comments. I needed a tool to programmatically copy the content. Luckily René Hézser created a tool to migrate the posts. His post about the tool is here: http://www.hezser.de/blog/2014/10/01/migrate-sharepoint-blog-to-wordpress/ As I began to test it I found a few defects. Problems when items in the posts weren’t found. There wasn’t anything that was particularly problematic but there were enough issues that I needed to produce an updated version with some fixes in it which I’ve sent back to René. In truth the tool was great. I ended up doing several migrations during testing and I know there are a few issues with the migrated content but his work definitely took some of my workload off.
With the content migrated it was important to make sure that the URLs didn’t change too much. Internal to the blog I caused the tool to change the cross-linked URLs so they’re all solved. However, external parties won’t know to drop the .aspx on the end of the links. So I’ve got a URL rewriter in place that tries to address any outside links that link directly to the old URLs. The beauty of this is that if I miss one the plug in I’m using (Redirection) also records 404 errors so I can look at what people are having trouble finding and add in specific redirections for it. René recommended a redirection for paths which I’m not doing. I set my permalink URL to mirror the way EBE created URLs. So that meant I could just strip the .aspx with the redirection tool. It’s matching RegEx for (.+).aspx and replacing them with $1… This works out great.
Thinking about Themes
One of the most interesting challenges with getting WordPress setup was figuring out what theme to use. In SharePoint land a Theme is relatively lightweight. It has colors, fonts, and in some iterations images. It’s more akin to a paint job on a car. Themes in the WordPress space are much more powerful. They’re really more like Site Definitions with custom page structures (master pages) and add-ins. Initially I was recommended the Thesis theme (See DIYthemes). However, after some struggling I ended up with the Enfold theme (See Themeforest)– why? I wanted to do a home page which had a different layout than a vertical one and Thesis didn’t allow for that (at least not easily). Both themes allowed me to change some colors and add header images. I will say that Enfold has some quirks. Getting my header to act like a banner under the menu required a CSS hack – not a problem, it just seemed like a normal thing that should have been something I could do through the menus.
Plugins for Perfection
While most of what I did on SharePoint was built in, WordPress is a blogging engine turned web site engine. As a result it has a different set of features than SharePoint which meant that I needed to add some of the functionality that I needed. What did I end up installing? Here’s the list.
- Akismet – A anti-comment spam service. It’s a great tool that plugs in to block spam comments.
- All-in-One Event Calendar by Time.ly – A calendar service that allows me to host my public events calendar and provide views on the home page.
- All-in-One Event Calendar Extended Views – A set of views that plug into the calendar to allow me to have a poster board sort of “listing” of events.
- Default featured image – Having migrated a lot of content most of my content didn’t have default images. The result is I wanted something to allow me to set a reasonable default image.
- Gravity Forms – A forms management tool. We did this so I could get my books and articles listings up on the site. It’s odd but this was the way to enter and manage the data.
- GravityView – This is a listing tool that allows you see the data put in by Gravity Forms – so this powers the books and articles listings.
- Jetpack – This is a set of tools provided by WordPress.com. It allows you to do things like look at stats, related posts, etc.
- Redirection – As mentioned above this does redirects for me and tracks when we get a page not found.
- RS Feedburner – This pushes folks to my Feedburner RSS instead of the on-site RSS. I wanted the consistency of reporting via Feedburner.
- Yoast SEO – This is an add-in tool that helps you get the search engine optimization on your pages that you want.
In general, the process of finding the plug ins was painful – not because of the “store” but rather because there are so many plugins that are available and they do similar things. Finding the right plug-in was harder than I anticipated. For instance, I started with another calendar plug-in and swapped it out when I realized it wouldn’t do what I needed.
Last night my wife and I were working on something which needed a holder to hold some half-sized sheets of paper. I rather quickly grabbed some cardstock that I had and started cutting it down, folding, and gluing to create a pocket that we could use to hold the sheets. I take for granted that there are things that I’ve learned how to do over the years and resources that I’ve got that not everyone has.
However, the skills needed to put the WordPress site together were largely selecting the right tools and basic HTML skills. I needed to understand HTML markup and CSS so that I could figure out some minor things with the Theme I wanted to fix. I’m sure that I’ve got more fine tuning to do but I can say that I never had to open a single PHP file and make a change to get things to work. For me that is a big bonus. While I can absolutely learn PHP if necessary, the idea that I didn’t have to was quite appealing.
While I may not have had to crack PHP, I did have some learning to do. I had to translate some of my SharePoint language into similar WordPress concepts. I also had to learn new concepts like Short Codes which amount to replacing a string with the results of some code. It’s really cool but it also means that I don’t think about adding web parts to pages, I add short codes. Unlike web parts that have a user interface for showing you their options you have to rely on documentation for how short codes work – and sometimes that documentation is lacking.
I also had to get used to a different set of defaults. At one point I got a complete set of unwanted widgets on the side of the blog posts – because I hadn’t specified any explicitly. The problem is that one of them was the Archive widget that allows you to navigate to posts from a specific month but with 10 years of posts that one widget created a huge amount of vertical scrolling.
It’s been a good transition thus far. I’m looking forward to less friction to getting my content updates posted and for better integration with social tools. So what do you think about the move?