I have been working on integrating the Chamber Dashboard plugins with WooCommerce (WC) to give our users payment options other than PayPal. As part of this WC integration, I have had to create products, orders and add line items to the orders to show the custom information coming in from our plugins. Although there is a ton of documentation when it comes to WC, I had to struggle to get the line items added correctly. This was especially difficult because the orders were being created from the admin side and not by the user.

There is a front end form that comes with the Member Manager plugin that users use to either register their business for the first time or renew their businesses with the Chambers. Either way, when they fill out the form, there is an invoice being created on the back end which gets sent to the user who would pay with either a check or using PayPal.

Since we are replacing PayPal with whatever payment options are set in WC, the users will be taken to the order page when they submit the form. When the chambers decide to use WC payments, an order gets created along with the invoice when the form is filled. But this order by default only has the product information (products here are the membership levels that have been already set).

Why are line items needed here?

The chambers can choose to add processing fee, tax, or donation amount fields to the front end form, which need to be added to the WC order as well. These numbers usually change for each order, so they have to be added to the order when the order is created (when the front end form is filled out). Fortunately, WC has an easy way of adding line items to the orders using the function wc_add_order_item().

Below is the function used to add an order in WC. As part of that process, wc_add_order_item() is called which creates the line items with the information from the form.

Creating a new order in WooCommerce

//Create a new order in WooCommerce
function cdashmm_create_wc_order($address, $product_id, $total, $customer_id, $donation, $tax, $processing_fee){
   if(cdashmm_check_mm_connected_to_wc()){
       global $woocommerce;
       $args = array(
           'customer_id'   => $customer_id,
           'created_via'   => 'Chamber Dashboard Member Manager',
           'add_order_note' => 'Created via Chamber Dashboard Member Manager');
       // Now we create the order
       $order = wc_create_order($args);
       // The add_product() function below is located in /plugins/woocommerce/includes/abstracts/abstract_wc_order.php
       $order->add_product( get_product($product_id), 1); // This is an existing SIMPLE product
       $order->set_address( $address, 'billing' );
       $order->set_created_via(  $args['created_via'] );
       $order->add_order_note( $args['add_order_note'] );
       $order->set_total( $total );
       $order->update_status("Completed", 'Imported order', TRUE);
       $order_id = $order->id;
               
       if($donation){
        $item_id = wc_add_order_item($order_id, array('order_item_name'    =>    __('Donation', 'cdashmm'), 'order_item_type'    =>    'fee'));
          if ($item_id) {
           wc_add_order_item_meta($item_id, '_line_total', $donation);
           wc_add_order_item_meta($item_id, '_line_tax', 0);
           wc_add_order_item_meta($item_id, '_line_subtotal', $donation);
           wc_add_order_item_meta($item_id, '_line_subtotal_tax', 0);
          }
       }
       if($processing_fee){
        $item_id = wc_add_order_item($order_id, array('order_item_name'    =>    __('Processing Fee', 'cdashmm'), 'order_item_type'    =>    'fee'));
          if ($item_id) {
           wc_add_order_item_meta($item_id, '_line_total', $processing_fee);
           wc_add_order_item_meta($item_id, '_line_tax', 0);
           wc_add_order_item_meta($item_id, '_line_subtotal', $processing_fee);
           wc_add_order_item_meta($item_id, '_line_subtotal_tax', 0);
          }
 }
       if($tax){
        $item_id = wc_add_order_item($order_id, array('order_item_name'    =>    __('Tax', 'cdashmm'), 'order_item_type'    =>    'fee'));
          if ($item_id) {
           wc_add_order_item_meta($item_id, '_line_total', $tax);
           wc_add_order_item_meta($item_id, '_line_tax', 0);
           wc_add_order_item_meta($item_id, '_line_subtotal', $tax<span data-mce-type="bookmark" style="display: inline-block; width: 0px; overflow: hidden; line-height: 0;" class="mce_SELRES_start"></span>);
           wc_add_order_item_meta($item_id, '_line_subtotal_tax', 0);
       }
 }
   }
   return $order_id;
}

In the function above, the wc_add_order_item() is called for each line item that needs to be created.
For example, if there is a donation field enabled on the front end form, I would like to include the donation amount as a line item in the order.

if($donation){
   $item_id = wc_add_order_item($order_id, array('order_item_name'    =>    __('Donation', 'cdashmm'), 'order_item_type'    =>    'fee'));
  if ($item_id) {
    wc_add_order_item_meta($item_id, '_line_total', $donation);
    wc_add_order_item_meta($item_id, '_line_tax', 0);
    wc_add_order_item_meta($item_id, '_line_subtotal', $donation);
    wc_add_order_item_meta($item_id, '_line_subtotal_tax', 0);
  }
}

So, this creates a line item with the value of donation from the user submitted form. The same is done for Processing Fee and the tax. Here is a screenshot of the WC order on the back end with processing fee and the tax added as items to the order. The donation was disabled on the site. So, it was not added to the order.

 

Adding line items to WooCommerce order

This enables us to store all the order information in one place and the total now correctly reflects the items in the order.

All about Gutenberg

What is Gutenberg?

Gutenberg is the new WordPress editor project named after Johannes Gutenberg. It is more than an editor replacement. Gutenberg is the new way of managing content on WordPress. There are mixed reactions on whether this is good or bad. My initial response was not a good one. When I first tried Gutenberg, I was not happy. I lost the familiar editor, lost my meta boxes and a bunch of other stuff that I am used to seeing on the post or page editor. I tried the chamber dashboard plugins with Gutenberg and half the stuff did not show up. I was shocked to say the least. What is going to happen to our plugin users when Gutenberg goes live and all these meta boxes disappear?

Once, my panic level came down, I started digging deeper into Gutenberg to see what was going on. WordPress has got to have a way to show everything the post and page editor does now. They cannot possibly remove all the meta boxes and other stuff that lives on the editor page. I started to gather more information on Gutenberg. In Nov 2017, I went to WordCamp Seattle where Morten Rand-Hendriksen gave a talk on Gutenberg. You can see that talk here – https://wordpress.tv/2017/11/28/morten-rand-hendriksen-gutenberg-the-future-of-wordpress/. He changed my mind in the first few minutes of the talk. I could literally feel myself relaxing and realized that this is not bad after all. There is some future to it and all I have to do is to prepare for it. I have been following the Gutenberg news ever since and now I am not as panicked. As I start to work on getting the Chamber Dashboard plugins ready for Gutenberg, I thought I will share the good and the bad. Hopefully, that will help someone else who is trying to keep up with the Gutenberg development.

Morten also gave a talk about Gutenberg at WordCamp US 2017. You can watch his presentation here – https://wordpress.tv/2017/12/10/morten-rand-hendriksen-gutenberg-and-the-wordpress-of-tomorrow/

When will Gutenberg be released?

Although Gutenberg is currently available as a plugin for us to install and test, it is eventually going to be part of WordPress core. The latest version of WordPress as of today is WP 4.9.1. Gutenberg is proposed to be shipped with core with WP 5.0. The estimated release time is April 2018. So, we have about 4 months to get acquainted with it, get our plugins ready for it and most importantly have some good documentation in place.

Why is it being added to the core instead of maintaining it as a plugin?

Many users have suggested that Gutenberg can stay as a plugin. That way, users who are not comfortable with it, don’t have to be forced to use it. But, in my opinion, it is a good idea to include it as part of core. Gutenberg is a feature rich editing experience. It is a step towards the right direction. Sure there is a learning curve and there is a huge push for plugin authors to get their plugins updated to work with Gutenberg. Being a plugin author myself, I know I have to re-write the code to make my plugins work with Gutenberg, which is a huge pain. But, in the end, we are working towards creating an awesome editing experience and I think that’s worth it. There is going to be resistance when we have to give up something we have been using for almost a decade. But, a lot changes in a decade. The users are changing and if the experience does not change, then it is not helping WordPress grow.

For example, my 10 yr old writes and edits differently than I do. The new generation of writers, bloggers and developers have a different way of learning and executing things. Making Gutenberg as part of core pushes everyone to work towards that nice experience.

Will I be affected by this and what can I do to prepare for it?

If you are part of the 29% of the web that use WordPress, then yes, you will be affected by this. Whether you like it or not, Gutenberg is going to be part of WordPress and here is what you can do to prepare for it:

  • Read more – read as much as you can about Gutenberg and its development. I have included some resources at the end of this post.
  • Test it thoroughly and give your feedback – https://github.com/WordPress/gutenberg
  • Whenever there is a new release, please test
  • Document your experience as you test. Write documentation for new users.
  • Write blog posts about your experience with Gutenberg.
  • If you are a plugin author, make sure your plugins are ready for Gutenberg. There is a lot of documentation already out there that will help you.

What if I don’t like it?

Users who are not yet comfortable with the new editor, can choose the classic editor as the alternate option. The current classic editor has been made into a plugin – https://wordpress.org/plugins/classic-editor/. You can install that and keep using that instead of the new editor. Since, eventually everything is going to be compatible with Gutenberg, it is recommended that you get used to it sooner rather than later.

More Gutenberg resources

Here are some resources to learn more about Gutenberg. I will update the list as I find new ones.

WordPress Plugin Developer

Almost 2 years ago, when I was planning to learn more about WordPress plugin development and get my hands dirty with some coding, I was given an amazing opportunity.

Morgan Kay who developed the Chamber Dashboard plugins asked me if I would be interested in taking over the development of those plugins. She was taking up a full time job and wouldn’t have time to work on these plugins anymore. I was honored that she considered me. I was very happy for the opportunity, but was also very scared. I hadn’t written a proper plugin before except for some custom scripts for clients.

Though the code was all pretty straightforward, the actual process was new to me. It took me a few months to get on board and get acquainted with the plugins. Morgan was working with Lisa Kruczynski from Lisa K digital media consulting. So, the three of us started working together. Morgan is a great mentor. I got started with answering support questions for which I had to dig into the code to figure out what was happening. The more questions I answered, the better I understood the plugins.

In addition to the plugins, I also had learn git. I knew about git before, but I had never really spent the time to learn how to work with it. So, I learned it all together. Initially, the progress was very slow as I was in the learning phase and was worried about screwing things up. My husband helped me a lot with all of this. He spent hours trying to help me write good, reusable code, teaching me how to debug and giving me tips and tricks to troubleshoot.

I started working on a couple of pressing issues. They went well, and my confidence level went up, too. The first time I had to push my changes to the repo, it was a nightmare. It took me forever to do that and I was dead scared about breaking something. Finally, when I pushed the code and nothing broke, it felt wonderful. Morgan walked me through the entire thing over Slack.

Since that first code push almost two years ago, I haven’t looked back. I started working on a premium plugin that would let members edit their businesses. It took a lot longer than I had anticipated, but every minute was worth it. We released the Member Updater plugin in February this year. That was my first WordPress plugin and releasing it felt like a dream come true. The best part was what I learned along the process. I had to obviously put in long hours trying to learn the little things. I remember last year during Christmas break, I was working on finishing the Member Updater and getting it ready for release. Can’t believe it has already been an year.

This entire year was good in terms of Chamber Dashboard plugin development. After releasing the Member Updater, we updated all the plugins with some essential features users have been asking for. The big thing I worked on this year was integrating WooCommerce with Chamber Dashboard so that the members can use payment systems other than PayPal. It was a very challenging project. It started out as a WooCommerce addon for the Chamber Dashboard Member Manager plugin and finally, it morphed into being a pro version of the Member Manager plugin. This plugin also took much longer than we expected, but there was a big learning curve with WooCommerce.

I am very proud today to say that the Member Manager Pro version is ready to be released. Even though I have been pushing updates and have released my own plugin this year, I am as nervous as I am happy about the new plugin.

One of the big things I learned in the past two years was dealing with plugin support. Lisa helps me a lot with support and honestly, I am not sure I can deal with support as nicely as she does. Sometimes the users are patient and understand when we ask them to check for plugin or theme conflicts. Other times, they want answers right away. I also learned not to be afraid of taking up big things. If I hadn’t taken up these plugins, I probably would still be figuring out how to write small plugins. I am also glad that my husband pushed me to accept this and work on it.

We have already planned a couple of more premium plugins to add to the collection along with adding a bunch of interesting features to Member Updater and Member Manager Pro. I am excited about them and can’t wait to get started.

Freelance WordPress Developer

I have been working as a full time freelance WordPress developer for the past few years. There have been many ups and downs and there have been many times when I considered seriously going back to be a full-time employee at a company again. Over the summer, when we moved to the Bay Area, I was kind of tempted again to go find a job in a company. But, after going through a couple of interviews, I realized that working in an office with fixed timings is not for me. It might change one day, but for now, I feel good about my decision.

So, as the new year approaches, and I look back at my year and see what I have accomplished and what I would like for the next year, there are a few things I am happy about and me staying a freelancer is one of them. Among the others are sticking with a productivity system for longer than a month and also diligently working on the Chamber Dashboard plugins. Those are topics for another day. Today I want to talk more about why working as a freelancer has been good for me, my family and my clients.

So, why do I like freelancing so much and why did I choose it?

To sum it up in one word, being a freelancer gives me the flexibility I need in my life. Flexibility with kids, with work, with my passions and hobbies and more importantly it gives me the flexibility to work the way I want to.

Everybody is different and they have their own ways of working and dealing with life. I am a morning person and I love to get up early and work. I like to be home when my kids come home from school and I like to volunteer in their school. Being a freelancer gives me the opportunity to do all this. Me and my husband don’t have to worry about who can take the day off if the kids are sick.

When I was working at a company, my project manager was the one who talked to clients and managed the schedules. She was awesome at it. I even learned a few tips and tricks from her. She would take care of handling the client’s deadlines and I only had to work to get things done on time. This sure is a nice setup, but I soon felt like something was missing. I always wanted to work on sites from start to end and launch them myself. There is a great pleasure in launching sites that I have built myself. In a company with other developers, websites usually get moved around between them depending on the need of the day. So, even though I got to work on some nice big sites until the launch, most of the times I only got to work on a portion of the website.

The other thing I felt I missed was talking to the clients directly. Many times, I felt like if I could talk to the clients directly, I would have been able to finish the work faster. I did learn a lot when I was working at other companies. I got to work with a variety of clients and most importantly, I was not the one worrying about how to get new clients and keep my business growing. But, as a freelancer, I realized I like doing all of this along with my work and three years later I still feel this way.

One of the best things for me as a freelancer is the ability to work on what I want to work on and when I want to do it. This does not mean I do not have deadlines or clients don’t need things done on time. But I get to plan my days. I talk to clients and plan my days and weeks ahead of time. I plan enough downtime to tackle any issues that may come up during the day. I have learned the hard way not to tell clients that all the tasks will be done ‘tomorrow’. I now tell them the date they can expect things to be done and I make sure I finish the work by that day.

How do my clients benefit from me being a freelancer?

Me being a freelancer helps my clients too. I am always the person they get to talk to when making decisions about their websites. I am the one giving them their estimates for time and cost and I am the one who is delivering the final project. So, I know exactly what is at stake. I strive my best to finish things on time because I want my clients to come back to me when they have more website needs. Since it is my business, I work hard to keep my clients happy.

I am usually the go to person for all their website needs. If I cannot do it for them, I give them guidance on the topics. Since most likely I would have coded their site, I know how to quickly fix things when needed. If I am maintaining their site on a regular basis, I know what plugins they use and what plugins might cause an issue or conflict on their site. I spend time to get to know their site thoroughly and that helps me make quick decisions when adding new features or making edits to the site.

I also get to know my client. I know their level of knowledge regarding WordPress, their budgets and over a period of time, I know why they make certain decisions regarding their websites. All this helps me help them.

What I don’t like about Freelancing

Along with the flexible times, choosing which clients to work with and many other glamorous things that come with freelancing, there is also a dark side.

I am (or I feel) responsible for everything that goes wrong with my client’s site. I have to be kind of on call in case their site breaks in the middle of my holiday. So, I am always carrying my laptop with me and hoping that nothing will go wrong while I am on the beach in Hawaii! There have been times when I was working from a hotel during a vacation as there was an issue. That sucked. But, it was just bad timing. I could have told the client that I was on vacation, and they would have understood. But, I felt bad that they were having issues and it was a quick fix. When you are running a business, you have to be prepared for these kinds of things. I do make sure I have out of office messages when I am not at work so that I can enjoy my time with my family.

There are also no paid vacations. There is a good and bad side to this. Since I don’t have a set number of paid vacation days, I can take any number of days for my vacation. So, when the kids had a week off for Thanksgiving, we went to LA to visit my sister-in-law. It was fun and I did not have to worry about not having enough vacation days for Christmas break. But, I also did some blogging and got some pending work done while my kids were playing with their cousins. So, it was okay.

The worst part about working for myself is dealing with procrastination. When you don’t have a boss watching over you every day, it is very easy to spend half a day browsing social media, and watching YouTube videos. But, eventually the panic monster wakes up and everything gets done and shipped off to the client. I have been much better at dealing with procrastination lately and I feel a lot less stressed about my work now. Honestly, I did take awhile to get to this place.

Freelancing Tools I cannot live without

Freelancing is not easy, but there are many tools that help me every day from keeping my focus to making sure I don’t screw up my taxes. Here are some of them:

  • Toggl – This is a time tracking tool that I use every single day. This is the first thing I open every morning.
  • WaveApps – This is an accounting and invoice software. They offer  a free version with a lot of features. I have been using it for 3   years and I like it.
  • OneNote – After trying many different project management tools, I finally decided that OneNote is the best for me. I have to thank my blogging buddy Nichole Betterley for showing me her workflow on OneNote which helped me to create my own. I have been using it for the past 6 months and it is working well for me.
  • Dropbox – The best way to save both personal and client files without worrying about losing them.

I have learned a lot in the past three years about organizing my work, dealing with clients and more importantly managing my work and personal life. Since I work from home, my work and personal life blend sometimes. It is interesting to see how much my kids notice when I am working. Sometimes, I casually tell them that I have a deadline coming up and they should probably leave me alone for a while so I can work. Turns out that my kids remember my deadlines better than their stuff. My 6-year-old woke up one day and suddenly asked me “Mom isn’t your plugin due today?”. That totally made my day 🙂

In the future, I might go back to working for a company, but for now, I love working for myself and the days I get to work in my pj’s are the best!

 

WordPress Widget Gallery Slideshow

WordPress 4.9 was released last week with many new improvements. One of the new features is the ability to add a gallery in the widgets which is a very cool feature. Multiple images can be added at once and the images can be displayed in one or more columns along with the ability to select the size and order of images. This is useful if you want to display flyers for upcoming events or showcase sponsors, award winners etc.

But, the gallery widget also comes with its own limitations like not being able to create a slideshow with the gallery images. Making the gallery images into a slideshow allows you to add more images and not worry about losing space on the sidebar.

The gallery images can be converted into a slideshow/rotating images by adding some simple CSS and JavaScript code. Even if you are not a person who likes to code, don’t worry. This is very easy and simple.

First create your gallery.

  • Go to Appearance -> Widgets.
  • Drag the gallery widget onto the sidebar. Let’s give it a title of ‘Our Sponsors’
  • Then click on ‘Add Images’ and select the images you would like to add to the gallery.
  • Once you select the images, you can organize them in the order you would like.
    • Change the gallery settings if you wish. I set the ‘Link to’ field as none as I do not want to link the image. You can either link it to the attachment page or the media file.
    • Change the number of columns based on how you would like to place your images. Since I selected 4 images in my gallery, I set the columns to 2 so that the images will show up in a nice square. Of course, if we are making the gallery into a slideshow, set the columns to 1.
    • If you select the random order, every time you load your page, the order of the images will change.
    • You can also select the size of the images.
  • Click on ‘Insert Gallery’ to add the images to the widget.
WordPress gallery edit screen

Gallery Edit Screen

  • Click on the ‘Save’ button to display the gallery on your sidebar.

This is how the gallery will look on the front end.

Now it is time to add some code to make the gallery widget into a slideshow. We will be adding some custom CSS and JavaScript code. There are a number of ways to add custom CSS and JS to your WordPress site. You can either use a plugin or add it to your child theme.

Here are some plugins:

Here are some tutorials too if you do not want to use a plugin.

I used the Simple custom CSS and JS plugin to demo the slideshow.

Here is the markup of the gallery:


<section id="media_gallery-3" class="widget widget_media_gallery">

<h2 class="widget-title">Our Sponsors</h2>

<div id="gallery-1" class="gallery galleryid-7 gallery-columns-1 gallery-size-thumbnail">


<figure class="gallery-item active_slide">

<div class="gallery-icon landscape"><img class="attachment-thumbnail size-thumbnail" sizes="(max-width: 150px) 100vw, 150px" srcset="" alt="" width="150" height="150" /></div>

</figure>



<figure class="gallery-item">

<div class="gallery-icon landscape"><img class="attachment-thumbnail size-thumbnail" sizes="(max-width: 150px) 100vw, 150px" srcset="" alt="" width="150" height="150" /></div>

</figure>



<figure class="gallery-item">

<div class="gallery-icon landscape"><img class="attachment-thumbnail size-thumbnail" sizes="(max-width: 150px) 100vw, 150px" srcset="" alt="" width="150" height="150" /></div>

</figure>



<figure class="gallery-item">

<div class="gallery-icon landscape"><img class="attachment-thumbnail size-thumbnail" sizes="(max-width: 150px) 100vw, 150px" srcset="" alt="" width="150" height="150" /></div>

</figure>


</div>

</section>

Since we can add any number of gallery widgets per page or per sidebar, we need to choose exactly which gallery widget we want to convert to the slideshow. For example, I have two gallery widgets in my sidebar, but I only want the first one as a slideshow. So, I will use the widget id to target that particular gallery. Here are a couple of ways to find out the widget id:

Once you have the widget id, you are ready to add the code.

Custom CSS:

#media_gallery-3 figure.gallery-item{
 	position:absolute;
  	display:none;
}

.gallery {
    margin-bottom: 15em;
}

#media_gallery-3 figure.gallery-item.active_slide{
  z-index:99;  
  display:block;
}

JavaScript code:


jQuery(document).ready(function( $ ){
    // Your code in here
   jQuery("#media_gallery-3 .gallery figure.gallery-item").first().addClass("active_slide");
    setInterval( "gcs_gallery_slideshow()", 5000 );
  });

function gcs_gallery_slideshow(){
  //var $next = $('.section.selected').removeClass('selected').next('.section');
  var $next = jQuery("#media_gallery-3 .gallery figure.gallery-item.active_slide").removeClass("active_slide").next(".gallery-item");
if ($next.length) {
    $next.addClass("active_slide"); 
}
else {
    jQuery("#media_gallery-3 figure.gallery-item:first").addClass("active_slide");
}
  //console.log("test");
}

There are a couple of things to remember.

  • Replace #media_gallery-3 with your widget id.
  • The number 5000 in the code is the speed of transition and equals 5 seconds. You can change the number as needed.

You can see a demo of the gallery slideshow here.

Contributing to WordPress

I was at WordCamp Seattle a couple of weeks ago and I heard Andrea Middleton talk about contributing to WordPress in her keynote speech. It was a very inspiring talk. Anyone who heard her probably left the room inspired to contribute to the WordPress community.

While I was at the WordCamp, I had conversations about organizing meetups and WordCamps, and I heard the same issues that I faced as a meetup and WordCamp organizer. Many people are energetic, want to help out and eagerly offer suggestions. But, when it comes to action, not many show up. People want to learn WordPress, but not many are willing to give back to the community. They have ideas and interesting topics for meetups, suggestions on how to improve the documentation and much more. But, unfortunately, they do not want to put in the time to make those ideas a reality.

So, I thought I would share my thoughts on contributing to WordPress and what you get back in return (yes… you do get something great in return).

Usually when someone is interested in contributing, they are given this website to go to for more information – https://make.wordpress.org/. It is an amazing website with lots of information. But, it also says “If you want to get involved in WordPress, this is the place to be”. Very nice. But, it does not tell you why you should get involved with WordPress and I think there is a good reason for that too. It is very difficult to summarize it into one line.

Why do we need to contribute to WordPress?

WordPress is an open source software which means it is being maintained by users like you and me. Many users around the globe are pitching in their time to make WordPress what it is and working towards improving it all the time. So, if you have ideas about how WordPress should be in the future, you need to join the people who are doing it and pitch in your ideas and work to make those ideas come true.

WordPress is not owned by one company who decides what goes into the next release. It is guided by teams from around the world – teams made of people who use WordPress on a daily basis.  There are some companies that sponsor to contribute to WordPress. Many people who contribute do so in their free time.

So, why do these people spend so much of their time and energy volunteering when they could be using the same time to work on their business? The answer is simple. They do it because they care. They care about WordPress. They care about the community that has been built around WordPress. It is a community made up of people around the world. They care about bringing the nice things to people. They believe in supporting the open source projects.

According to Matt Mullenweg, contributing to open source, and particularly the WordPress project, is “probably one of the best learning opportunities on the Internet.” That is so true. Contributing helps you learn more about WordPress. You will feel good about the fact that you helped millions of people who are using WordPress. You will make connections with people who share the same kind of passion.

How do I get started?

This was the first question on my mind more than the why. There are a number of ways to contribute. You can answer support questions, submit patches for bugs, edit documentation, help with translation and more. These are few of the ones listed on https://make.wordpress.org/ which also gives you more information on how to get involved.

Here is some information to get you started:

  1. The first step is to create an account at https://wordpress.org/.
  2. The second step is to join the WordPress team on Slack – https://make.wordpress.org/chat/. You will need an invite to be able to join. Just follow the instructions on the page to get an invite. All the team meetings and conversations happen on Slack.
  3. Then go to this site – https://make.wordpress.org/. There is a big list of things where you can contribute.
  4. Click on the area you would like to work. For example, let’s select ‘Support’.
  5. Once you are on the support page – you will see all the posts related to Support. You can subscribe to the posts to keep track. There is also a link to the ‘Support Forums’ which will give you more information.
  6. Once you are on the support page – https://wordpress.org/support/welcome/, there are lists on the sidebar that you can go into to see the topics. Once you see a question that you can help with, just type in your answer. You need to be logged in to be able to reply to the topic.

If you are not happy with any of the documentation, or if you think the docs need to be updated, you can go in and edit the docs yourself. If you think you want WordPress in your language, feel free to go ahead and translate it or help with translation. If you have a patch to fix a bug, go ahead and submit it. You can be a WordPress plugin or theme reviewer and many more.

The easiest way to start contributing is through support. It makes sense, too. Whether you are new to WP or have been using it for a long time, you will always have a question in mind. Support groups are one of the best places to find answers. So, while you are looking for answers, if you come across some question you know the answer to, you can just jump in and answer that.

Another way to contribute is through Meetups and WordCamps. WordPress meetups are a great place to meet people who share the same passion. Meetups bring local WordPress users together under one roof. As a meetup organizer, you are providing the space and the opportunity for people to connect and helping build the local WordPress community.

I got my first few clients after I started going to Meetups. As a new freelancer, meetups gave me not only the place to have interesting conversations, but also a place where I could get my questions answered. After attending a few meetups, I started organizing a monthly help desk meetup. A lot of people showed up on some days and there were only a couple of people the other days. But, every month there were at least a couple of people who needed help with something that they could not figure out even after following some tutorials. It felt really good to be able to help people. I wish I had that kind of help when I was new to WordPress.

It also gave me the confidence that I was good at what I do. I am kind of an introvert who is not very comfortable up on stage or talking in front of more than 3- 4 people. So, being an organizer and standing up in front of more than 10- 15 people was already a tad bit out of my comfort zone. But, the more I did it, the better I was. So, there is always something you get in return. Meetups became a very big part of life, and when I moved out of Seattle this summer, I missed them.

WordCamps are much bigger than meetups. They are WordPress conferences organized entirely by a group of volunteers. WordCamps bring people together from different states and countries as well. These usually happen in big cities and are one or two-day events (on the weekends).

Being a speaker, volunteer or a sponsor at WordCamps are all good ways to give back to the community. Being involved in organizing a WordCamp is no easy task but, it is fun. I was the volunteer wrangler for two WordCamps at Seattle and I was the co-lead organizer for one year. I learned so many things that would not have learned otherwise. I made some amazing friends by being part of the organizing team. More than anything it felt so good to put together an event that big. This year when I went back to Seattle, it was actually very weird to just be an attendee. It was nice, too, as I actually got to go to some of the talks. But, I sure missed helping out.

Here is an article from Matt Mullenweg where he talks about companies dedicating 5% of their people to improve WordPress. I think that is a good rule of thumb and can apply to individuals too. If not 5%, you can do whatever works for you. You can help in any way you can and spend how much time you want to. Every little thing counts. So, as you are making business and personal goals for the new year, please do also considerate to donate some of your time to give back to WordPress.

One of the biggest questions I always get asked is about choosing WordPress themes. I come across many beginners who are new to WordPress and are learning their way through everything – themes, plugins, child themes etc. This post is about how to find a theme that works for you.

There are many themes both free and paid and choosing one theme that gives you everything you need for your site from a sea of themes sounds practically impossible. Add to that all the new features that get added to themes every day, it feels like it is a huge task to get the theme that’ll work for you.

I will walk you through the process of choosing a theme. Yes, it is a process. You don’t have to spend lot’s of hours on it, but a couple of hours spent will give you a good enough theme to start with.

Before you get all excited and open your browser to do some theme searching, you need to do your homework. Here is a list of things you need to have before you start searching for themes.

  1. Write down your priorities
    • What is your website about? – Why is this important? Because not every website can have the same set of colors or organization. The layout of the website will depend a lot on the type of site.
    • Do you already have a logo? If yes, do you want to choose the website colors that are close to your logo?
    • Do you want a slide show on your home page?
    • Is this a blogging site? e-commerce site? A regular website with static pages?
    • What do you want to display on your home page – blog posts? Products? Images? Videos?
  2. How tech savvy are you?
    • Can you write a little bit of HTML and CSS?
    • Can you create a child theme?
    • Are you familiar with FTP to add/remove stuff to your site?
    • Are you familiar with shortcodes?
  3. Finding a theme on wordpress.org

There are a number of websites where you can find a theme for your WordPress website. I am going to focus on getting a theme from wordpress.org. WordPress.org has free themes which have gone through a rigorous review before getting up on the site for download.

One thing to remember is that you should not be looking for the entire functionality to come from the themes. Themes are most useful for the layout of the content and colors of the website. Not functionality. Some themes do come with certain functionalities and that is good. But, try to use plugins to add functionality to your site. That way, if you end up changing your theme, your plugins will still work.

One advice I will give is to choose a responsive theme. Mobiles and tablets are being used more and more to view websites. So, choosing a good responsive theme saves you hours trying to make the site look good on the different devices.

Head over to https://wordpress.org/themes/ to find a list of beautiful themes. The featured themes are shown by default. You can look under popular or the latest themes. You can also use the super cool Feature Filter. This has a nice set of features you can select. This is where your earlier homework comes in handy. To use the feature filter to your advantage, you need to know some of the important things you want for your site.

wordpress_theme_feature_filter

 

Once you have a list of themes, there are a few more things we could look for. You can click on the theme for more information about it. What exact information are we looking for?

  • Last updated date: One of the first things you want to check is when this theme was last updated. You would generally want to select a theme which has been updated recently. Why? Because, WordPress releases updates on a regular basis to fix many bugs. If the themes are not updated regularly, they might have security issues or they might not work well with the current WordPress version.
  • Next thing to pay attention is the number of active installs. This is number of sites that are currently using this theme.
  • You can check the ratings and reviews of the theme. But, I would advise you to not put too much weight on these. Looking at the number of ratings for each star does not tell you much. If you click on the bar for each of the rating, it will give you a detailed list of the reviews. You can actually read what people had to say about the theme. I usually read the one star ratings. They will tell you if there are any things to look for. That said not all one star ratings are bad. Users might have given it a 1 star because it lacked a few features that they wanted. Not necessarily a bad thing. You might or might not need those features.
  • The next thing you can look at is the support forum for the theme. This will tell you if the support tickets are being answered quickly. This is also a place you can go to if you run into problems while you are setting up that theme. So, make sure that the theme has a good support forum.
  • One other thing to keep in mind is about how old the theme is. Old themes have more users and many bugs have been discovered and fixed. So, there is a higher possibility of you finding a solution if you have any issues with the theme. But, if the theme is not being updated as and when WordPress is updated, then you are bound to run into issues which will be difficult to fix.
  • If a theme is new, you probably would not have issues with compatibility, but also there are not many users for the theme yet. So, you might run into issues which might not have a solution yet. If you are looking for something specific, I would go into the support forums and see what issues the theme has and if and how that will affect you.
  • If you really like the theme and do not find any reviews or ratings on the wordpress.org site, I would do a quick Google search to see if you can find something about the theme.
  1. Installing the theme and setting it up

So, you have now found the theme that you want to use. The next step would be to go into your WordPress dashboard -> Appearance -> Themes and search for the theme you just found. All the themes found in wordpress.org can be found in your dashboard under appearance-> themes. Find that theme and preview it. It will show your site content with the theme so that you’ll have an idea of how your live site would look. Bear in mind though, you have not entirely set up your theme. So, it might not look that great in the preview but, it will still give you a general idea.

You can then install the theme and play around with it. Most of the themes will usually come with documentation you can follow as you set up your website.

One of the best ways to test a theme would be to install it and try to set it up. Sometimes you will need to try a few themes before you settle down with the theme you like. But, also you might never find the perfect theme you are looking for. I would suggest launch your site with a nice theme (even though it is not exactly like how you want it) and keep working on it to make modifications as needed. Sometimes the functionality you are looking for can be achieved by using a simple plugin.

5. What if you cannot find a theme that suits your site

If, after searching through the entire WordPress.org, you do not find anything you like? You can quickly do a Google Search and you will find many websites with WordPress themes – both free and premium. I have used many of those themes myself and most of them are fine. All the rules above still apply. Make sure you know what you are getting for that price. I would still recommend using a free theme especially if you are beginner and get adjusted to the WP Dashboard. Once you are more comfortable and ready to explore, you can purchase a theme.

The other option would be to hire a web designer and developer to help you build a custom design and code a custom WordPress theme.

 

I have been using WordPress for more than 5 years and I have played around with plugins a lot. Plugins are an essential part of any WordPress site. Every WordPress site is unique and the plugins we use for the site will depend on the functionality of the site.  Here, I am going to list a few plugins that are essential to any WordPress site irrespective of it’s functionality. The plugins I will be talking about here do not have anything to do with how the site functions. These plugins do not add anything new to the front end of the site (except for one). They are tools that help with site maintenance and ease of use from the back end.

There are a lot of plugins out there and most of them are very good. The plugins I mention here are the ones that I have been using or have used it on a client’s site and I know that it wrorks well. Here are the plugins in no particular order. For each of these plugins, we will be looking at why these plugins are important, what are the easy to use plugins for each and some details of the plguins.

  1. Backup Plugins
  2. Security Plugins
  3. SEO Plugins
  4. Contact Form Plugins
  5. Plugins that enhace the WYSIWYG editor capabilities

Let’s look at each of them in detail:

Backup Plugins

Why are backup plugins important?

They make it very easy for you to make a backup of your site. It is very important to make a backup of your site on a regular basis. Even if your hosting is providing backup, it is still a good practice to make a backup of your site. It is also important to store your backup away from your site so that if your site gets affected by malware, you can restore it from your backup. It is always a good idea to save the backup in a cloud server – Dropbox, OneDrive, Amazon S3 etc…

The backup plugins give you all these features and more. They make it super easy to make backups with the single click of a button. They give you options to automatically email the backup files to yourself or send the backup to a cloud server. You can also schedule backups and not have to worry about it anymore.

There are two backup plguins that I have used and are very good.

BackWpUP – https://wordpress.org/plugins/backwpup/

This is a free plugin with a pro option. For most of the sites, the free version works fine. It is very easy to setup and also has some tutorials to get you started. Free version has options to backup to Microsoft Azure, Dropbox, Rackspace Cloud Files, FTP Server, Web Space and Sugar Sync.

UpDraftPlus – https://wordpress.org/plugins/updraftplus/

This is also a free plugin with a pro option and woks fine for big sites as well. I currently use it on one of my clients’s sites which has a lot of images. The backup is done pretty quickly and is sent to Dropbox. It is very simple to setup and the free version has options to backup to Dropbox, Gogle Drive, FTP, S3, Rackspace and email.

Security Plugins

Why are Security Plugins important?

Security plugins protect your WordPress site. Any WordPress site needs a security plugin. I have met many people who say that they do not have any e-commerce or that their’s is a very small site and so they don’t use a security plugin. But, small or big, ecommerce or not, you need to make sure your site is secure. Websites are hacked because of weak passwords, vulnerabilities in plugins or themes or if the site is not up to date. Server vulnerabilities can also cause your site to be hacked. So, your site must be secure.

A couple of the most popular security plugins and a few features of each of the plugins.

WordFence – https://www.wordfence.com/

  • Gives you a detailed IP info
  • Scanns for malware
  • Repairs files
  • Blocks Brute Force attacks
  • Country blocking

iThemes Security – https://ithemes.com/security/

  • Brute force protection
  • File change detection
  • Strong password enforcement
  • Hide login and admin

SEO Plugins

Search Engines bring traffic to your site and so you want to make sure you have the terms the user is searching for. SEO plugins make it easier for you to add keywords and meta descriptions for every page and post on your site. They actually have a lot of features that help with SEO.

The most popular SEO plugins is Yoast SEO (formerly known as WordPress SEO by Yoast).  It has a free and premium version. Simple to setup and has a bunch of features – post titles and meta descriptions, Breadcrumbs, XML Sitemaps etc. The free version should be pretty good for a small site.

Google Analytics

I want to mention Google Analytics here because it kind of goes hand in hand with your SEO. Google Analytics is a web analytics service that tracks and reports website traffic. If you are trying to improve your SEO, then you should also track your site with Google Analytics. It gives you a lot of statistics about your site like the number of people visiting your site, the pages they viewed, the most popular page on your site etc. It also gives you information regarding keywords used by people to search for your site. This helps with SEO as you can assess the keywords and make improvements.

Google Analytics is free. You can login with your Google account and get a tracking code for your site. After your site is setup, you can either login to Google Analytcs site to view your data or you can install a Google Analytics plugin that will show you the data in your wp-admin dashboard. There are many different Google Analytics plugins. I mentioned the one I use.

Contact Forms

Contact forms are the most important part of any website. They need to be simple and user friendly. The most popular contact form plugin is the Contact Form 7. Very easy to setup and you can have different types of contact forms on your site. You can specify the required fields, can have multiple email addresses in a dropdown etc. The styles can be customized to match your theme (you need to know some CSS for this). You can also add the captcha feature with the form with reCaptcha.

Plugins that enhance the WYSIWYG Editor capabilities

The WYSIWYG editor makes it very easy to write content on the posts and pages. It gives us a number of tools to style the text by changing font sizes and colors. But, there are a few features missing in the default WYSIWYG editor. TinyMCEAdvanced improves the features of the editor. They add features like adding a table, or background color for the text etc right from your editor. It comes in pretty handy when you want to insert a simple table in your post or page.

The TinyMCE Widget plugin gives you a nice little widget on your sidebar. You can use this instead of a text widget and you will get all the functionality of the post/page editor in your sidebar.

There are a few more plugins that can be mentioned here which might be useful for majority of the sites.

JetPack – A huge set of different plugins in one pack. You can enable or disables the individual modules.

Wp-Cache – Helps with caching the site so that the pages load faster

Broken Link Checker – If you have a lot of pages on the site, you can track all the links in different pages/posts using this plugin. It shows you if a link is broken so that you can fix it.

Wp Help – Useful little plugin where you can write helpful instructions for managing your site.

Leave a Reply