Website Designer, Developer

Self Hosted WordPress vs Hosted WordPress

Which kind of WordPress do you need? There’s two kinds as you have discovered and they are very different. One is called Hosted WordPress or “” and the second is called Self Hosted WordPress or “”.

Here’s the difference:

This version starts out as free except for the cost of a custom domain (i.e. you can upgrade this version as needed. This approach provides an economical web presence where you do have enough control to present a feature-rich blog / website to you visitors for 0$ out of the box.

Good For Hobbies, Students, Blogs, Sharing Content On Social Media

This option is a good one for you if you plan to promote your site via social media or you can easily target your market. Example: Great for hobbyists where the site isn’t so much a source of revenue and customers but more of a resource for your friends. Good for students producing a common presence for article/tech reference. does offer upgrades that are billed monthly or annually. Options include live chat support, Ad-free, advanced custom design and e-commerce. Fees can add up to over $25.00 per month for a managed WordPress experience offering live how-to courses. A really good option for a sort term, do-it-yourself venture. hosted sites restrict what plugins are available and it’s almost impossible to edit a theme so you can truly customize and brand your visitor experience. Integrating your site with Instagram and other social venues can be a bit buggy because won’t allow you/a developer to integrate an API.

Very Secure

The upside of is it’s very secure and really does give you the ability to create an elegant presentation of your service, hobby, ideas and new fledgling business. They are a solid option if you are considering Shopify. I’d recommend over Shopify because you can easily migrate to a self-hosted version when expansion demands it. Shopify can be tough and expensive. Your site is easy to maintain and set up. I think the hosted version is ideal for those who need to create a knowledge base where students can access information and search engine optimization isn’t a #1 priority.

It hasn’t been proven, but from an SEO perspective it is widely believed Google will favor a self hosted version of WordPress over a “free” site at It may be very difficult to achieve a respectable trust value with a “free” site .vs a WordPress website hosted at Godaddy or here at 

SEO Options offers SEO tools for it’s paid Business version in addition to third-party plugins, custom plugins, and themes. Hosted through Pressable, I believe this is a solid option for some, but expensive and maybe not in your budget. The business version is an awesome approach if you need WordPress support and are willing to pay the 25.00 per month for hosting. And that’s where it starts! Need e-commerce? Expect to pay more depending on product volume and delivery.

Full Service, Hosting For $25.00 A Month

If server management, full-service support, product delivery and you are never going to manage your website in-house is your option, then I’d consider going with a managed option.

Are you a do-it-yourself kinda person? Maybe you need to dominate the SEO vertical in your niche, but your budget won’t allow for high-end hosting. You want to control the types of plugins uploaded to your WordPress driven site in addition to on-site SEO content but are okay starting out in a shared hosting environment that will cost less than $80.00 a year. Maybe you don’t mind staying on top of your own website updates. Or maybe you will handle moving your WordPress driven site to another hosting environment once traffic, sales, and profits allow you to make that move.

100% Control For Free Plus Hosting & Domain

A self-hosted version of WordPress is hands down the way to go for the webmaster who demands control over budget, flexibility and can either hire out web development to a contractor on an as-needed basis or has developers and WordPress implementors working in-house. Or, you do it all because you are a WordPress wizard. is the best way to go because you have all the options to do whatever you want.

You can install it yourself or have your hosting company install it. I handle the installs for my clients and then they handle the installation of there own themes and plugins, hiring me to do some of the more complicated development work as needed.

As Little As $54.00 A Year

The upside is the self-hosted version of WordPress is free software. Costs include hosting which can be a little as $43.00 a year for a cPanel/Linux shared-hosting environment plus $11.00 a year for your domain. Domain emails can be free! So, for as little as $54.00 a year, you have a website where adding content is as easy as using the WordPress dashboard user interface, you can add as many email addresses as you wish and scale your website and associated resources as needed. Literally, go from a website that can handle a few visitors or transactions to one that handles thousands of visitors and transactions. All on one installation of WordPress.

Better SEO

A self-hosted version of WordPress offers the ultimate in SEO integration. We can control how your tracking software is integrated, what pages are tracked, goal conversion tracking and special scripts on a per page basis.

Need to run specific, automated tasks (Chron Jobs)? Self-hosted WordPress is the best option.

Need to control what version of PHP your WordPress site runs on? Self-hosted is the way to go.

Access The WordPress REST API

My #1 reason for going self-hosted. For scalability, the option to pull content from WordPress into your external application could be the biggest advantage of going self-hosted.

In closing, per comments below, it is for complete control of the data that one selects a self hosted version of WordPress.

Celtein Text Widget

A custom plugin developed to add colors and styles matching the legacy styles of a website produced in the 90’s. Retro!! Love it.

<!--?php /* Plugin Name: Celtein Text Widget
Plugin URI:
Description: Celtein Text Widget adds a custom text widget to the Celtein Theme that allows for a custom styled text area
Version: 1..0.0
Author: Chris Parsons Author
URI: License: GPL v3

// If this file is called directly, abort. if ( ! defined( 'WPINC' ) ) { die; } define( 'CELTEIN_TEXT_WIDGET_VERSION', '1.0.0' ); class CelteinText_Widget extends WP_Widget { public function __construct() { parent::__construct( 'celteintext_widget', __( 'Celtein Text Widget', 'celteintextdomain' ), array( 'classname' =&gt; 'celteintext_widget',&lt;br ?--> 'description' =&gt; __( 'A basic text widget developed for the Celtein theme.', 'celteintextdomain' )

load_plugin_textdomain( 'celteintextdomain', false, basename( dirname( __FILE__ ) ) . '/languages' );


* Front-end display of widget.
* @see WP_Widget::widget()
* @param array $args Widget arguments.
* @param array $instance Saved values from database.

public function widget( $args, $instance ) {

extract( $args );

$title = apply_filters( 'widget_title', $instance['title'] );
$message = $instance['message'];

echo $before_widget . '
<div class="card-class">


if ( $title ) {
echo $before_title . $title . $after_title;

echo '
<div class="textwidget">'
. $message . '</div>
. '

echo $after_widget;


* Sanitize widget form values as they are saved.
* @see WP_Widget::update()
* @param array $new_instance Values just sent to be saved.
* @param array $old_instance Previously saved values from database.
* @return array Updated safe values to be saved.

public function update( $new_instance, $old_instance ) {

$instance = $old_instance;

$instance['title'] = strip_tags( $new_instance['title'] );
$instance['message'] = ( $new_instance['message'] );

return $instance;


* Back-end widget form.
* @see WP_Widget::form()
* @param array $instance Previously saved values from database.

public function form( $instance ) {

$title = esc_attr( $instance['title']);
$message = esc_attr($instance['message']); ?&gt;

<label for="&lt;?php echo $this-&gt;get_field_id('title'); ?&gt;"><!--?php _e('Title:'); ?--></label>

<label for="&lt;?php echo $this-&gt;get_field_id('message'); ?&gt;"><!--?php _e('Text &amp;amp; HTML'); ?--></label>
<textarea id="&lt;?php echo $this-&gt;get_field_id('message'); ?&gt;" class="widefat" cols="20" name="&lt;?php echo $this-&gt;get_field_name('message'); ?&gt;" rows="16">&lt;?php echo $message; ?&gt;</textarea>

<!--?php &lt;br ?--> }


/* Register the widget */
add_action( 'widgets_init', function(){
register_widget( 'CelteinText_Widget' );

Get Found In Google Search

Getting Your Site To Show Up In Search

It’s a question I answer daily. Can you make my site appear at the top of Google? The quick answer is no. And anyone who tells you they can is lying. Placement in search results is largely dependent on software. Google, Bing, Yahoo are software driven. It’s software that analyzes your website and then determines based on over 200 factors where your new or old website will show up in the search engine results page (SERP).

Keep in mind that if you search for your website by ‘name’, you will probably come up #1. Assuming your site has been submitted to the search engine(s). And if not, it’s only a matter of time before a search robot, which is software, finds your new site, crawls it, indexes it, adding it to the over 1-billion websites that can be found in the search engine.

Your goal is to be found for a given ‘search query’. If you sell ‘monkeys’, and your website allows visitors to buy your monkeys, then wouldn’t it be cool if I searched ‘I need a new monkey’ and your site showed up? That’s the idea for any product or service represented online through a website.

8 steps to being found in search results

So here are the steps required to be found in search be it Google, Bing, Yahoo:

  1. Build your website.
  2. Put your name, address and telephone number prominently displayed at the top of your home page.
  3. Make sure you have placed a site description tag in the <head> of your website. No more than 156 characters long.
  4. Add a site title tag in the <head>. No more than 70 characters.
  5. Content should be published containing descending H tags. In other words, the page title can be wrapped in <h1>title</h1>, then a sub-heading wrapped in <h2>sub-heading</h2> and so forth. You can add additional subheadings <h3>, <h4>, <h5>.
  6. Write your content suing the phrases one would typically use to find your site. So, for the monkey salesman, the opening paragraph on the home page could read like this “Awesome monkeys sold here to awesome people. Providing quality monkey sales every day. When people want to buy a monkey, they shop with the #1 monkey sales company in Sometown, SomeState.” Use a conversational style of writing and create content on each page that clearly describes your intent and the message you wish to convey. Don’t overdo it with keywords and phrases. That can work against you.
  7. Time to submit your site. For Google, you can do that here Search Console or here at Webmaster Tools. For Bing, here Webmaster Tools. There’s no guarantee your site will be found right away, but this is the first logical step in notifying the search engines that you are out here on the web.
  8. Now the hard part. Your website is like a plant. If you don’t water it what happens? New content, updated content, relevant content and sharing your content via social media is like water to the plant. The only reason a website underperforms, can’t be found in search for a given query is because there is no reason to visit the site. If your site doesn’t help the visitor, search engines will ignore it.

Grow your website

Your website’s content should clearly, in as few words as possible, instruct the visitor what to do and how. Spare your visitors a long diatribe on how great you are. We already know that. The truth is, no one cares about your website or how great it looks. What people love is when a website addresses their personal needs, problems, requirements immediately, elegantly, precisely. Make sure all content is no more than three clicks away.

A website that is interactive will outperform one that isn’t most of the time. Interactive means your visitor is inspired to click on an option to find out more. Give your visitors an incentive to get something by giving something. If your website inspires a click on the “Read More” button or “To download our booklet, click here”.. these are known as ‘conversions’. And if you can develop a site that inspires the visitor to click through your site (click through rate = CTR)  in order to obtain a conversion, you are on your way to search engine dominance.

This is just a very short glimpse into what it takes to elevate your website in the search engine game. Along this journey, there are other hurdles you may run into like previous address issues that conflict with your new business location. In future posts, I’ll try to address these contingencies and how to address them.


Happy Thanks Giving 2016

We’re celebrating Thanksgiving here at home in Redding, California on this last Thursday of November 2016. Just want to wish all of you a very Happy Thanksgiving! I hope you are in good health and near the ones you love. All the same for those that are beyond Thanks Giving, the world is a big place. On this day I extend my own thanks to you, recognizing you for all you have contributed to my world. Thank you!

It’s been a wild year. So much has changed. An amazing amount of good stuff happening and I can’t wait to see what 2017 brings. Anyway, I just want to say:

“I’m thankful for the friendships I’ve made over the past year through SteelBridge Media and the WordPress community. I’m also thankful for all the friends I’ve made via Twitter and other social venues. I have had the honor of meeting some of you and others I’m hoping to meet soon. I can’t tell you how appreciative I am of all the positive, productive and enlightening experiences we have fostered. Incredible! Let’s keep the love going!”

Thank you Keri Perla for being my cornerstone. You add the most to my life. I love you!

To all of you, no matter what you are doing today, I am thankful for you in my life!

Warning: Fatal Error

Plugin Trouble: WordPress

A fairly common occurrence users of WordPress experience is known as the “white screen of death”. Well, it’s not death and really it’s not the end of the world either. Although some of you panic when your website decides to stop working.

Typically the white screen is accompanied by a couple paragraphs of text signaling you with “Warning” and “Fatal Error”. This is happening because WordPress can’t load the contents of your website. If you look at the statements maybe you can see the word ‘plugins’ located in the file directory string. I have included a photo below where I have circled the file folder in question.

fatal error plugins

Most fatal errors are associated with a plugin issue.

So, if you see something like whats pictured above, I’ll share with you the solution to getting your site back.. alive and functioning.

Step 1.

Use your code editor, IDE ( Integrated Development Environment) to FTP (File Transfer Protocol) into your sites root directory. Not sure about this? Call your hosting company. I know of one hosting company that offers great support for customers like you. Find them here SteelBridge Media. I use Coda and Dreamweaver. Atom is another one that I like. Textmate, Sublime are a couple others that have served me well. I stick with the two spendy editors, Coda and Dreamweaver.

Anyway, your goal here is to connect via FTP so you can find the plugins folder within the WordPress file structure.

Step 2.

Once you’ve successfully connected to your host, look for the ‘wp-content’ folder, then find the plugins folder.

Step 3.

Rename the plugins folder to ‘plugins-og’. Renaming the plugins folder deactivates all the software contained inside. If you look inside the plugins folder, you’ll see a series of subfolders all containing the plugins you downloaded. One or more of those plugins are causing the trouble you’re experiencing.

plugins folder

The plugins folder can be accessed via ftp

Step 4.

Go to your browser and access “” (use ‘your’ domain name silly, not my example)

Log-in to your WordPress website and activate another theme. I use one of the default themes that come with WordPress upon installation. Pick the Twenty Sixteen theme and activate it. (From your WordPress dashboard, find themes here Appearance -> Themes. Hover over your the Twenty Sixteen theme or any other theme and select the activate button). Activating another theme allows you to see that your WordPress installation is okay. It’s okay because the newly activated theme works! Test your site out to be sure. If you can’t activate a new theme because there aren’t any themes, upload one. Look for the ‘Add New’ button. And if that still doesn’t work, you need to contact me.

Step 5.

Once you have proven out your site works, go back to your plugins folder you accessed via FTP. Open that folder and rename all your plugin sub-folders to end in ‘-og’ and restore the original name of the parent folder to ‘plugins’ (your parent folder was originally ‘plugins’, put it back to that .

Reactivate your original theme and test your site. Don’t be surprised to find stuff missing or non functional. The goal here is to see if your website loads and you don’t get the ‘Warning’ screen.

Once you can see your website loads with out errors (errors are messages that appear on your screen telling you shit is f’ed up) you’re ready for the next step.

Step 6.

Go back to your FTP client and start renaming/restoring original names of the plugins sub-folders ONE AT A TIME to their original name. That means removing the ‘-og ‘ I instructed you to attach to each file folder name. Again these are the files found in the plugins folder.

As you restore each file folder to original name, take some time to verify your site works. This is the whole point of this stage of the process. We are trying to isolate the offending plugin/folder. Test it, reload it. Clear your browser cache!!!

Eventually you will find the offending plugin when you test the site after restoring any given plugin folder name. You’ll know because the ‘white screen of death appears’.

Step 7.

Rename the folder that caused your site to ‘crash’. Yeah, the “white screen of death” thing. Crash means your site didn’t load. So, you saw the error message again. This means the last plugin you restored is a bad, very bad plugin. Delete it from within your WordPress dashboard. Why? Well, some plugins should go through an uninstall process controlled by a script included within the plugin’s folder. I avoid deleting from my IDE. Better yet.. just leave it renamed, then find the developer and reach out and share your experience. Most developers want to help and learn. Expect a reply!

At this point you can look for another similar plugin that provides the solution the offending plugin did at one time not so long ago. Additionally, Once again, you could try to contact the plugin developer and ask for an update. Or, maybe you shouldn’t be plugging around with any and all plugins online! Why? Because if you do that enough, you’ll catch website-crabs, browsyphilis, firefoxitis, safariamydia.

My advice is pay someone to develop a plugin for you. Someone who will keep your site healthy and produce custom plugins that are sanitary!

I can help you. Build plugins. I do that!

Questions? Send me your comments below.

WordPress function fixes overlapping admin bar

I used to fix the overlapping admin bar issue with CSS. For example:

.logged-in .navbar {
margin-top: 32px;

But that solution doesn’t work unless you’re developing with Bootstrap navigation styles. So, I found a cool way to simply tell your browser to move the


down 32px so it renders below the WordPress admin-bar. I use an inline style that activates upon the presence of the WordPress admin-bar. Place the following code in your header.php file where your navigation menu code is. Look for the


tag and duplicate my example below. Keep in mind you may have class and id names that must not be deleted or pasted over. If you are unsure or not getting the results you hope for, comment below with your questions. I’ll do my best to reply quickly.


if ( is_admin_bar_showing() ){ echo 'style="margin-top:32px;"'; }

Some of you may feel this is sort of a hack. Maybe so. But I sure like the simplicity of this solution.

Wordpress function admin-bar overlap