• Skip to primary navigation
  • Skip to main content
  • Skip to footer
  • Store
  • Support
  • Theme Documentation
  • My Account
  • Cart

9seeds

Building Custom WordPress Solutions | Plugin Development

 
  • Custom Development
  • Themes
  • Plugins
  • About
  • Contact
  • Blog

WordPress Membership Sites

We've been building WordPress membership sites for years. We've worked countless WordPress membership plugins as well, our favorites remain BuddyPress, Peepso, Restrict Content Pro, WooCommerce Memberships and MemberPress.

Here we've written about some of those experiences, especially all the little tweaks we've made to customize WordPress sites.

A Revolutionary Education Starts with a Killer LMS

Posted on October 11, 2018

In order to create an outstanding learning environment, you need an exceptional LMS WordPress theme. That’s what we have in Derrick, our Genesis child theme geared especially to digital learning and membership communities of all kinds. I’ll write more about Derrick in a bit, and bring you up to speed on some updates we’ve made to it — as well as highlighting our other Learning Management System (or LMS for short) themes that sort of fly under the radar.

But before we get into that, let’s throw a few paragraphs at what an LMS is: how it came to be, and what a great a tool it is for building out courses and structuring digital coursework specifically for your audience and users.

Distance Learning Gave Rise To The LMS

Once upon three centuries or so ago, people started figuring out how to teach others via correspondence courses. Initially coursework was sent through the post. After completing a lesson, students mailed it back to the instructor for grading and received another. This type of distance education continued for some time. Then the 20th century saw it morph into multimedia learning, using a combination of audio, video, and print materials to deliver the course curriculum.

In the 1980s, the marriage of education and telecommunications went somewhat mainstream. College classrooms started broadcasting televised courses and began to consider computerized courses.

An LMS hauls around the books for virtual learners and instructors alike

So what’s a Learning Management System, anyway? The short answer is that an LMS is like the Swiss Army Knife of both education AND software. It’s crazy-versatile and highly customizable.

The longer answer is, “A neat piece of software magic that has all the tools needed to create, organize, manage, and deliver education via a digital platform.”

As a result of all this functionality, you can use an LMS in a variety of ways, from employee training to custom workshops, as well as academic instruction and continuing education hours.

    Your basic Learning Management System:

  • Enables the delivery of course components to students
  • Tracks student progress
  • Allows quick viewing/sorting of data
  • Makes course materials accessible from anywhere at any time
  • Supports various content formats (video, audio, ebook, etc.)
  • Enables synchronous (classroom-style) or asynchronous (flexible, student-led) learning

Most well-rounded LMSs have options to create an online training program, a membership site with digital download sales, and build an email list.

Say Hello To Derrick, An LMS WordPress Theme

All in all, Learning Management Systems have gotten pretty sophisticated, given all the features and functionality even the most basic platforms offer. There are many LMS platforms now, some of which are very specialized to their respective industries.

Today you can find LMSs in use by colleges and universities, businesses large and small, government agencies, and even your local elementary school.

Derrick is our answer to a broad need for Genesis child themes with LMS integration. It was recently given a spit shine, a bow tie, and a handy new version number (1.3.0). In addition to integrating with the premium LearnDash learning management system plugin, Derrick now supports LifterLMS.

Why? Because we’ve always loved offering our customers choices, and we think LifterLMS is a terrific product. (I mean, check out their advanced quiz functionality and the impressive social learning option.)

Derrick’s Available In Our Theme Store

Click here to experience the Derrick demo right now.
Ready to purchase? Just click here.

If you’ve purchased the Developer Pro Pack, Derrick is already in your account, ready and waiting for download.

Don’t have our Developer Pro Pack yet? Click right here to find out how to get immediate, unlimited access to all our themes (present and future!) at a killer discount.

And … we didn’t stop at Derrick!

Derrick is the only theme we specifically market as LMS-friendly. But it’s not the only Genesis child theme on the 9seeds roster that supports LMS functionality, though.

Caroline is billed as a theme for universities, and Fernando is a theme for authors. They’re both LMS-ready Genesis child themes. With versions 1.1.0 and 1.3.0 respectively, Caroline and Fernando have both been updated and offer LearnDash and LifterLMS integrations.

Set up a private community. Carve out a passive income stream with digital products. Create an exceptional virtual learning environment. LMS website builders Derrick 1.3.0, Caroline 1.1.0, and Fernando 1.3.0 are at the ready to help you accomplish any of these goals and streamline the process along the way.

Continue Reading

Jon Brown

    More by Jon Brown

    Using Memberpress to Convert Free Users to Paid

    Posted on January 10, 2017

    MemberPress is a great WordPress membership plugin that lets you create rules to protect your content and sell subscriptions to access that content. Making customized exceptions to those rules though has long been a bit challenging even for WordPress developers.
    Thanks to filters added in the latest version of MemberPress however it’s now much easier to customize MemberPress rules! We did that for a client recently.

    Having a Successful Membership Site

    A client came to us with an existing site that had a lot of content generated over time and building a sizable list of registered users. They wanted to augment their free subscription model with selling memberships to access some of that same content.

    MemberPress was built for this kind of scenario!  They installed the plugin and had already set up the following tags and MemberPress rules:

    1. Made a whole library of premium posts
    2. Tagged posts appropriately: Beginner, Intermediate, and Advanced
    3. Created 3 paid membership levels in MemberPress (Beginner for $5/mo, Intermediate for $7/mo, and Advanced for $10/mo)
    4. Set up 3 MemberPress rules to:
      • Protect all content tagged Beginner and allow Advanced, Intermediate, and Beginner memberships to access it
      • Protect all content tagged Intermediate and allow Advanced, and Intermediate memberships to access it
      • Protect all content tagged Advanced and allow Advanced memberships to access it

    With the exception of creating the content, it’s a very straightforward setup, each membership level can access all the content for their subscription level and below.

    Converting Existing Users to Paid Users

    It’s easy to direct traffic to your sales page and to get first-time site visitors to signup for something free, but what about getting all the existing free registered users to sign up for a paid membership?

    It’s also becoming common practice to build semi-permeable content gateways where a visitor can access a little content for free with or without registering but then getting locked out from viewing more content until they subscribe.

    There’s no way in MemberPress at the moment to allow limited access to some things if they don’t have a MemberPress membership of some sort though. MemberPress recently added a new hook in their WordPress plugin, however that helps with this exact scenario.

    What this hook allows is for a site owner to do is send an email to all their currently registered users and say “Hey, we have all this new premium content, you should buy it but as a long time registered user we’re going to give you unrestricted access to a premium lesson so you can try it out”.

    By setting this up in code and allowing an existing user to get access it works out better because there’s no friction to the customer. You lose a certain percentage of people for every click you make them do to get a thing so by handling it this way it just appears to work magically as far as the customer is concerned. Another way to solve this would be to make a new membership and only allow existing members to sign up for it.

    We discussed this with the client but they wanted to offer their existing base access to any single lesson they wanted. By creating a membership and then putting in a rule it would either overly give these users access to the entire library or you would have to pick a single lesson to showcase as the “free” premium one.

    Custom Code for MemberPress

    All of the non-code ideas were a compromise and so we went with the original plan and put in the following snippet for them.

    add_filter('mepr-pre-run-rule-content', 'allow_premium_access_9s' ,10,3);
    function allow_premium_access_9s( $protect, $current_post, $uri ) {
        $user = new MeprUser(get_current_user_ID());
        $prd = get_page_by_title('Premium Membership', OBJECT, MeprProduct::$cpt);
        //make sure we have a user and the premium membership lookup succeeded
        if($prd->ID && $user->ID) {
            //if the user isn't already a premium member
            if(!$user->is_already_subscribed_to($prd->ID)) {
                $promo_access = get_user_meta($user->ID,'promo_access',true);
                if(!$promo_access) {
                    //if the user does not already have promo access to a lesson
                    //allow them in to this one
                    update_user_meta($user->ID,'promo_access',array('lesson'=>$current_post->ID,'expiration'=>strtotime("+1 month")));
                    $protect = false;
                } elseif($promo_access['lesson'] == $current_post->ID && $promo_access['expiration'] > time()) {
                    //The user has previously chosen this to be their promo lesson and
                    //their special access is not expired
                    $protect = false;
                }
            }
        }
        return $protect;
    }
    

    The thing about this rule is that it allows for some sneaky special things anytime you are running a promotion. Another good example is allowing access to a protected post if there’s a special code on the URL. Put that URL code right into your Facebook ad’s target URL and have someone get to see premium content for 1 click. Then when they go off the page you let the unauthorized message do its job and upsell them to membership status.

    With the new MemberPress customizations, you can now selectively grant access to protected parts of your site without making complicated interlocking sets of rules for promotional items which sometimes live and die within days.

    Continue Reading

    Todd Huish

      More by Todd Huish

      Footer

      Get in Touch

      • New Project Inquiry
      • Product Support and General Inquiry
      • Store Purchase Terms and Conditions
      • Store FAQ
      • Cookie Policy
      • Privacy Policy

      Our Services

      • Custom WP Development
      • Theme Store
      • Plugin Store

      WordPress Plugins for Sale

      • Time Tracker
      • Authorize.net SIM Gateway

      WordPress Plugins for Free

      • Simple Calendar
      • WP Chargify
      • Facebook
      • Twitter
      • LinkedIn
      • WordPress
      • GitHub

      Copyright 2025 | 9seeds, LLC

      Like nearly all websites this one uses cookies too. Like most users we think consent banners like these are a dumb solution, but it's what we've got until new laws are passed. We use cookies on our website for remembering your preferences, for example if you're logged in or what is in your cart. We also use 3rd party cookies for analytics so we know what pages on the site are most popular. By clicking “Accept”, you consent to the use of ALL the cookies.
      Do not sell my personal information.
      Cookie SettingsAccept
      Manage consent

      Privacy Overview

      This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience and may even preclude you being able to login to the website.
      Necessary
      Always Enabled
      Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
      CookieDurationDescription
      __stripe_mid1 yearThis cookie is set by Stripe payment gateway. This cookie is used to enable payment on the website without storing any patment information on a server.
      __stripe_sid30 minutesThis cookie is set by Stripe payment gateway. This cookie is used to enable payment on the website without storing any patment information on a server.
      cookielawinfo-checkbox-advertisement1 yearSet by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisement" category .
      cookielawinfo-checkbox-analytics1 yearSet by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Analytics" category .
      cookielawinfo-checkbox-necessary1 yearSet by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Necessary" category .
      cookielawinfo-checkbox-others1 yearSet by the GDPR Cookie Consent plugin, this cookie is used to store the user consent for cookies in the category "Others".
      cookielawinfo-checkbox-performance1 yearSet by the GDPR Cookie Consent plugin, this cookie is used to store the user consent for cookies in the category "Performance".
      Functional
      Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
      Performance
      Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
      Analytics
      Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
      CookieDurationDescription
      _ga2 yearsThe _ga cookie, installed by Google Analytics, calculates visitor, session and campaign data and also keeps track of site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognize unique visitors.
      _gid1 dayInstalled by Google Analytics, _gid cookie stores information on how visitors use a website, while also creating an analytics report of the website's performance. Some of the data that are collected include the number of visitors, their source, and the pages they visit anonymously.
      CONSENT2 yearsYouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
      Advertisement
      Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
      CookieDurationDescription
      VISITOR_INFO1_LIVE5 months 27 daysA cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
      YSCsessionYSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
      yt-remote-connected-devicesneverYouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
      yt-remote-device-idneverYouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
      Others
      Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
      CookieDurationDescription
      cookielawinfo-checkbox-functional1 yearThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
      SAVE & ACCEPT
      Powered by CookieYes Logo