Points
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.
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.
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.
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:
myCRED Core Settings for your point type.
Excluded users do not have a balance.
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.
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 |
3 Comments
Eh Jewel
Note that get_the_content doesn’t return the same thing as what the_content displays. For that you need to do this:
Eh Jewel
Demo User
If you are wanting to check if a custom (non core block) is for a page or post, include the namespace/name-of-block: