Site Information

The purpose of this page is to give a Web Admin more information about what is being used to make the site run than what can be found in the Admin Portal. This information is broken out into different sections that can be quickly accessed using the Table of Contents below.

Important: It is the responsibility of anyone maintaining this website to keep the information on this page as up-to-date as possible!


TABLE OF CONTENTS


THEMES

Every WordPress site begins with choosing a theme. This not only drives the starting “look and feel” of the site, but also dictates some of the structure and capabilities of that site. It is important to understand a little about themes, and how they actually work, if you are going to maintain this website. This page is meant to document what is being used by this site, NOT the basics of WordPress. If you are unfamiliar with the concepts of themes, there are a ton of resources available… please start there before going any further!

IMPORTANT: WordPress makes it very easy to just Activate a new theme. However, almost ALL of the customization on this website would be GREATLY disrupted, and potentially not recoverable (unless you have a backup) so please… if you decide to change themes, make sure you know what you are doing. And preferably do this in an sandbox environment first before rolling it out publicly!

The theme that this website uses is called “Child Theme for Natural Lite.”


Child Theme

This site is based on the theme “Natural Lite” – but with customizations. WordPress best practices recommend that anytime a theme needs to be changed, you should create a Child Theme that contains code (stylesheets or php) that either override, or augment, the functionality of the Parent Theme.

The benefit of doing this is that you can continue to get updates for the Parent Theme without losing the changes applied through the Child Theme. Getting updates to the Parent is critical to any functioning website… this will allow it to continue working with newer versions of WordPress as they are released, as well as any updates the Theme Developer decides to apply. However, when you get updates you also don’t want to have to reapply your changes each time!

Important: What this means is that BOTH the Parent and Child Theme need to be present on the server, but the Child Theme needs to be activated.


PLUGINS

Used to extend the functionality of WordPress, plugins are a critical component to making this site function the way it does. This section is meant to describe how this site is using the plugins that are active. This may be different than the generic plugin description – especially since some plugins do many things.

For some of the plugin, a more detailed explanation of how they are being used may be necessary. In these cases a link will be supplied in the description that navigates to the expanded description.

Important: For information about current version, links to documentation and support, etc. please refer to the Plugin menu on the Admin Portal.

PluginUse on this Site
Akismet Anti-Spam
BluehostThis plugin is supplied from the hosting company (Bluehost) that the site is currently hosted with. This allows integration with the hosting platform and needs to be active as long as this site continues to be hosted on Bluehost.
Counter Number Showcase
Creative Mail by Constant Contact
Customizer Export/Import
Google Analytics for WordPress by MonsterInsights
Hello Dolly
Jetpack by WordPress.com
OptinMonster
Organic Profile Block
Responsive Accordion And Collapse
Restrict User AccessUsed to create “levels” of users that are then applied to what a user can see (and what they can’t). This allows the site to control what can be seen publicly, versus what appears after a Gardener signs in.

For more detailed information about the use of this plugin on this site refer here.
Smash Balloon Instagram FeedUsed on the Gallery page to pull in images from the Instagram feed and display them.
Smush
WP Display Header
WPForms
WPForms Form Templates Pack
WPForms Gelocation
WPForms Lite
WPForms Signatures
WPForms User Registration

RESTRICT USER ACCESS

This plugin is solely responsible for separating the content that can be seen publicly, from the content that should only be seen by Gardeners that have logged in.

Admin Portal – User Access Menu

This plugin adds a new menu item to the Admin Portal called User Access. This allows access to several pages used to control the plugin. We are not going to cover them here (refer to documentation for more information about the plugin itself), but are going to point out how we are using this plugin.

Access Levels

The access levels that this plugin allows us to create are what can be used to control what groups of users can see… what pages, posts, menu items, etc.

This site depends on having two different access levels setup within this plugin:

logged_inIncludes only users that are currently logged in. This means that if someone is actually a Gardener, but hasn’t logged in yet, they would not be a part of this group until they DO log in.

Applying this access level to an item (menu, page, etc.) means that it is only accessible if someone is logged in. If they are not logged in, that item will not be accessible.
not_logged_inIncludes any user that is not logged in. Anyone coming to the website (before logging in) is automatically a part of this access level.

Important: Applying this access level to an item (menu, page, etc.) means that it is only accessible if someone is not logged in. This should NOT be used on any item that you want to be accessible regardless if someone is logged in or not!

On this site, this access level only applies to the Login page, which should no longer be visible if someone has successfully signed in. For pages like Welcome, that we would want to be visible no matter what, there is NO specific access level applied!

Configuring the Access Levels

Navigate to User Access -> Access Levels and you can see the different Access Levels that are setup (they should match what you see above). Hovering over the Access Levels will bring up an Edit option that you can click on which will bring you into the configuration specific to that Access Level.

Again, refer to the developer documentation for more information about everything that can be controlled here. This page is specifically focused on how to set it up for this site.

After clicking Edit you will see a series of sub-panes. The important ones for this site are:

Access ConditionsThis should be set to “Meets ALL of these conditions” and then you can include the pages that should be included in this access group.

For logged_in they should be:
Pages – Gardeners, Volunteer, Plot Map, Photo Submission, Suggestions, and Homepage
Posts/Blog – This should be left empty, but it’s important to have this rule otherwise all posts are public (even though a user would need to enter a URL directly to get there).

For not_logged_in they should be:
Login, and Registration
MembersThis controls which users belong to an Access Level. In the case of this site it is really easy:

For logged_in it should be:
Logged-in

For not_logged_in it should be:
Not logged-in
CapabilitiesThis should be left at the default for both levels. All of the options should be set to “Unset”
OptionsThis tab has some very important settings in it that the functionality of the site is dependent on. These shouldn’t be changed without making sure you know what you are doing.

For logged_in make sure that the following is set:

Default Access = “All unrestricted content”- This is what allows this access level to see all of the pages that are NOT labeled with a specific Access Level.
Extend Level = “Do not extend”
Non-Member Action = Set to “Redirect”, and the page we need to redirect users to needs to be set to “Login”. This is REALLY important because if someone types in a valid URL (bypassing the menu system) this will send them to the login page.
Duration = “0 days”
Hide Admin Toolbar = True (button is on). This one is particularly important since we don’t want ANY users to be able to access the WordPress portal itself.
Level Name = “logged_in”

For not_logged_in make sure that the following is set:

Default Access = “All unrestricted content”- This is what allows this access level to see all of the pages that are NOT labeled with a specific Access Level.
Extend Level = “Do not extend”
Non-Member Action = Can be set to “Redirect”, but with no redirect value
Duration = “0 days”
Hide Admin Toolbar = True (button is on). This one is particularly important since we don’t want ANY users to be able to access the WordPress portal itself.
Level Name = “not_logged_in”

Application to Menu Items

Unlike pages, access levels must be specifically applied to menu items. You do this by navigating to the menu ( Appearance -> Menus ) and clicking on a specific menu item. In the Menu Structure pane, each menu item has a small downward arrow on the right hand side, and clicking that expands to more advanced options.

In the advanced settings, you will see an option labeled Access Levels. This is where you would apply the access level. Just begin typing in the text box, and the currently configured access levels will pop up for you to choose from.

Current settings are as follows:

GardenersSet to logged_in which means this menu item only appears after someone has signed in. We do not need to apply the access level to any of the sub-menu items here because if Gardeners isn’t visible, then none of the sub-menu items are visible either.
LoginSet to not_logged_in which means that this menu item is only visible before someone actually logs in. Once they have logged in, this menu item disappears (which makes sense, they are already logged in).

Note: The Logout menu item is inserted programmatically so does not appear in the expected location (and as such access level cannot be applied). Refer here for more information on how Logout works.

Important: There appears to be a “quirk” with this plugin that prevents the access level settings for menu items from being preserved when changes to the menu structure are made. If you do make any changes to the menu at all, please go back and verify that the access level settings listed above are in place!

Important: Please remember that controlling access ONLY through availability of Menu items is not valid! A user can type the URL of a page directly into a browser and be directed there. If you only have Access Levels applied to Menu items, a user would still be able to access pages this way. Apply the Access Levels to pages you want to secure following the instructions above!