Tag Archives: WooCommerce

LearnDash and WordPress Groups

Add User to LearnDash Group When Orders a WooCommerce Product

LearnDash and WordPress Groups

I love the LearnDash LMS for WordPress.  I use it over at javascriptforwp.com and not only is it powerful out of the box and with plugins, but it’s hooks allow for even more.

One thing LearnDash cannot do out of the box is sell access to Groups via WooCommerce.

A Group in LearnDash, amongst other things, let’s you assign a group of courses to a group of users.  You can add courses over time and those users will automatically get access.

For my JavaScript for WordPress Master Course I wanted to switch from one gigantic course (hundreds of lessons) to a bunch of smaller courses that I could also sell individually.

To do this I setup a new Group in LearnDash called “Master Course” and added my new smaller courses to it.  I also created a new WooCommerce Virtual Product called “Master Course.”

Then I simply added this code to my functions.php:

Here is what this code does:

  • Hook into WooCommerce when an order is marked complete
  • Checks to see if that order includes my Master Course WooCommerce product
  • If so, it adds that user who purchased the product to my LearnDash group

It’s pretty simple and shows the power of hooks in WordPress.

To customize this for your own use you would have to add the Group and Product IDs to the corresponding variables on line 5 and 7.

One thing this doesn’t do is remove a person from a group if they cancel or are refunded the order, since this is something I wanted to do manually.  However, you could easily do this by hooking into the woocommerce_order_status_cancelled or woocommerce_order_status_refunded hooks.

A big thanks to Justin from LearnDash and Ernest from UncannyOwl, who is working on a plugin that will also allow for this functionality.

Connect WooCommerce Products with LearnDash Courses

I have been happily using LearnDash LMS with WordPress for my JavaScript for WordPress Master Course.

One of the tricks of using WooCommerce and LearnDash together is that you can build your courses separately from your WooCommerce products.

This is helpful for creating bundles that automatically grant access to individual or multiple courses.  In my Master Course I have it broken down into four parts, which are really individual courses behind the scenes.

To accomplish you have to install the Download, Install and Activate the Free LearnDash WooCommerce Integration Plugin from the LearnDash site.

Then after you create your Courses in LearnDash, create a Product in WooCommerce you will have an option to select Related Courses.

Integrate WooCommerce and LearnDash Courses

You will also want to go into WooCommerce Settings > Accounts and make sure to enable “Enable registration on the Checkout page.”

WooCommerce Enable registration on the "Checkout" page

With this configured, when someone purchases the course via WooCommerce on the front-end and creates an account during checkout they will automatically have access to the Related Courses you selected for the product.

You can check this by clicking on a User account and looking at the course access. Mine says Parts but yours will probably say Courses.

LearnDash Check User Enrolled in Courses

I have been quite happy with this combination of WooCommerce and LearnDash for selling my courses since WooCommerce allows me to customize the selling process quite a bit.

I will also add that you will likely want to customize your WooCommerce Emails to include welcome information about the course in addition to the default information.

Hopefully this helps you get up and running selling online courses using LearnDash and WooCommerce.

Good luck and enjoy!

Getting PayPal API Credentials for WooCommerce Refunds

You can process payments in WooCommerce with PayPal using only the account email.  However, in order to refund payments from within WooCommerce you must enter your PayPal API credentials.

Here are the steps for doing that:

  • Login to PayPal
  • Go to Profile > Profile and Settings
  • Click My Selling Tools
  • Go to API Access
  • Select NVP/SOAP API integration
  • Click to view API Username, Password and Signature
  • Add information into WooCommerce PayPal settings

I find it much easier to refund payment directly from within WooCommerce and not need to login to PayPal to refund manually in addition to from within WooCommerce as well.

$100 Off My WooCommerce Development Workshop at WooConf 2016

Screen Shot 2016-03-05 at 10.36.22 PM.png

I’m super excited to head out to Austin on April 6-8 this year for my 2nd WooConf.  This year I will be doing a workshop based on a WooCommerce Theme Development Course I did at Treehouse.

Thanks to the folks at WooCommerce, I have an unlimited coupon code “WOOCONFZAC” for $100 off for anyone who wants to attend the conference for Woo work.

Check out the trailer for the course to get an idea of just some of what we will get into.

 

Of course we will also talk a little about JS and API work with WooCommerce 😉

“Unpaid order cancelled – time limit reached” in WooCommerce

When working with a WooCommerce site recently, I kept coming across orders that showed up as cancelled in the admin area with the message “Unpaid order cancelled – time limit reached.”  After tracing the message back to it’s source via the code, here is what I figured out [as posted to WooThemes user forums].

There is an option in the control panel: WooCommerce > Settings > Inventory > Hold Stock (minutes). This setting determines how long WooCommerce will hold an item in the checkout/payment process before canceling the order and displaying the message “Unpaid order cancelled – time limit reached”

Here’s a screenshot of the admin setting: http://cl.ly/NeKF

You can increase this amount, but what this means to me is drop off in the checkout process. Or, possibly on the end with PayPal or another payment gateway. We had the issue with a Stripe process, but determined that it timed out on the WooCommerce end before sending the request to Stripe.

Just wanted to post that up in case other’s have this problem.  I originally didn’t find the solution via Google.