Point Balances

Each user on your website has their own balance. This balance is stored as a custom user meta, just like any other user detail in WordPress. This also means that if you backup your wp_usermeta table in your database, you are also backing up your users balances.

myCRED manipulates these user meta via a set of functions to provide support for some of it’s core features. Depending on your setup, and what myCRED features you require, you can use either functions myCRED provides or functions WordPress provides.

Current vs. Total Balance

Each user has two balances for each point type a website uses. This is to accommodate certain myCRED features, for example the Ranks add-on.

A users current balance is the amount of points that the user has right now. Their total balance is the total number of points a user has gained based of their history. In most cases the two balances will be the same with the exception of manual adjustments of a users balance by an administrator.

This is used by the Ranks add-on to allow a user to keep their rank even if they spend their points causing their current balance to diminish (e.g. spend points in your store). In this example, if ranks are based of a users current balance, then they would be demoted when using their points.

Point Type Identification

Since version 1.4, myCRED has built-in support for managing multiple point types. This means that a user will potentially have multiple balances, one for each point type they are not excluded from. To keep track of this, myCRED stores balances under their “point type key” which is used as the meta_key.

Point type keys are sanitized using sanitize_key, which means they must be alphanumeric and lowercase.

The Default Point Type

myCRED will store the default point type on a website under the meta_key mycred_default. As of version 1.7, you can change this using the MYCRED_DEFAULT_KEY constant.

Custom Point Types

When you create a new point type, you are required to set a unique point type key. This key is then used to identify balances for this point type. This of course also means that if a third-party system also stores points as a custom user meta, you could manage that point type in myCRED by creating a new point type using the same key as the third-party system.

Exclude Users

myCRED allows you to exclude users and/or administrators from having a balance. Being excluded also means that you can not use any myCRED feature since you lack a balance. You can exclude users in two ways:

Exclude by ID

You can add their ID to the exclusion list in your point type settings. This list uses a comma separated list of IDs.

Exclude Admins

You can also select to automatically exclude “Point Editors” or “Point Administrators”.

Alternatively you can also use the mycred_exclude_user filter and adjust users you want excluded from a particular point type via script.

myCRED Core Settings for your point type.
Excluded users do not have a balance.

Multisites

On multisite installations a users meta data is stores in one table which means if a user needs to have a unique balance on each site, we can not use the point type key setup. This would mean a user would have the same balance on all sites (if they are member on more then one).

To get around this, myCRED appends the sites Blog ID to the meta key. This way a user can have a unique balance on each site. You can disable this using the “Central Logging” feature in myCRED. When central logging in enabled, a user will have the same balance and history on all sites.

Figure 1. Point type key comparisons based on WordPress usage.

Regular WordPress WordPress Multisites
Point Type Balance / Total With Central Logging Without Central Logging
Default Point Type
Current Balance
mycred_default mycred_default mycred_default_{blog_id}
Default Point Type
Total Balance
mycred_default_total mycred_default_total mycred_default_{blog_id}_total
Custom Point Type
Current Balance
mypointtype mypointtype mypointtype_{blog_id}
Custom Point Type
Total Balance
mypointtype_total mypointtype_total mypointtype_{blog_id}_total

Last edited June 24, 2016