Shortcodes

Overview

WP Fusion includes a few shortcodes that let you display user meta, and show / hide content based on a user’s tags in your CRM. These can be used to personalize the site content based on a user’s custom fields or tags.

Displaying user meta

You can use shortcodes to display meta data for logged in users. The syntax is pretty simple. For example, to show a user’s first name:

[user_meta field="first_name"]

Any field listed in the Contact Field tab of WP Fusion’s settings can be accessed in this way.

You can also display different information for users who haven’t registered yet, or aren’t logged in, like so:

Welcome, [user_meta field="first_name"]Guest[/user_meta]!

Logged in users will see their first name, while visitors will see “Welcome, Guest!

User meta formatting

WP Fusion supports formatting date and time fields using PHP’s date function. For example:

[user_meta field="next_bill_date" date-format="Y-m-d"]

This will output the date like 2019-03-10.

For escaping text in the date format, use a double backslash. For example:

[user_meta field="next_bill_date" date-format="l \\t\\h\\e jS \\o\\f F, Y"]

This will output the date like Friday the 22nd of March, 2019. For more information on the syntax see PHP’s date documentation.

Video – Displaying user meta

Displaying a contact ID

You can display the current user’s contact ID as well. The format is [user_meta field="{crm_slug}_contact_id"]. For example with Infusionsoft the shortcode would be:

[user_meta field="infusionsoft_contact_id"]

 

Displaying content based on tags

You can use these shortcodes to show and hide content based on a user’s logged in status and CRM tags.

Note that WP Fusion also includes support for Elementor, Beaver Builder, Divi, Oxygen, and the Gutenberg Editor. If you’re using a page builder it may be easier to configure access rules using WP Fusion’s visual interfaces rather than a shortcode.

Restricting content based on logged in status

You can use the following two shortcodes to show content based on whether or not a user is logged in, regardless of their tags. This works like:

[wpf_loggedin]Only visible to logged in users[/wpf_loggedin]
[wpf_loggedout]Only visible to logged out visitors[/wpf_loggedout]

Restricting content based on tags

To restrict content based on a user’s CRM tags, wrap the desired content in the WP Fusion shortcode, using the examples below.

This content will only show if the user is logged in and has the tag “New Customer”:

[wpf tag="New Customer"]Restricted Content[/wpf]

This content will only show if the user is logged in and has both the tags “New Customer” and “Purchased Course”:

[wpf tag="New Customer,Purchased Course"]Restricted Content[/wpf]

Show the content if a user does not have a tag

To show content only if a user doesn’t have a certain tag, use the following syntax:

[wpf not="New Customer"]Restricted Content[/wpf]

You can also combine multiple tags for the not parameter, like

[wpf not="New Customer, Active Member"]Restricted Content[/wpf]

In that case the content will be hidden if the user has any of the tags. So if the user is tagged either New Customer or Active Member, the content will be hidden.

You can also combine parameters for more advanced locking, like so:

[wpf tag="New Customer" not="Payment Failed"]Restricted Content[/wpf]

Requiring any tag, instead of all

By default, WP Fusion will only unlock the content if the user has all of the tags in the list. To make it so that the content will unlock when any of the tags are found, include method="any" in the shortcode, like:

[wpf tag="New Customer,Purchased Course" method="any"]Restricted Content[/wpf]

Else conditions

The [wpf] shortcode also supports an “else” condition. The usage works like:

[wpf tag="New Customer"]
Shows only to users with the "New Customer" tag
[else]
Shows to all logged in users who don't have the "New Customer" tag
[/wpf]

Logged out parameters

By default, content in the shortcode will always be hidden from users who aren’t logged in. You can change this by adding logged_out to the shortcode. For example:

[wpf not="New Customer" logged_out]
This will show to everyone who doesn't have the "New Customer" tag, including logged out visitors.
[/wpf]

or:

[wpf tag="New Customer" logged_out]
Shows only to users with the "New Customer" tag
[else]
Shows to all users who don't have the "New Customer" tag, as well as logged-out visitors.
[/wpf]

Square brackets in tag names

WordPress does not allow square brackets in shortcode parameters. If your tag names have square brackets in them, you can use parentheses instead and they will be treated as equivalent by WP Fusion.

For example if your tag name is [Customer] Paid Course, your shortcode will work with [wpf tag="(Customer) Paid Course"].

Displaying content based on page rules

Using the [wpf_user_can_access]] shortcode, you can show and hide content based on the access rules configured in the WP Fusion meta box on another post.

For example, this shortcode shows a message only if the current user has permission to access a course with post ID 456.

[[wpf_user_can_access id="456"]
Thanks for signing up for Awesome Course!
[/wpf_user_can_access]

Else conditions

This shortcode also accepts an [else] condition:

[wpf_user_can_access id="456"]
Thanks for signing up for Awesome Course!
[else]
You might be interested in our Awesome Course
[/wpf_user_can_access]

Within a loop

If the id= parameter is omitted, the shortcode will use the current post ID. This can be used in a loop or custom template to personalize the results.

For example to alternate the Elementor template displayed based on a user’s permissions:

[wpf_user_can_access]

[[elementor-template id="14331"]] // Enrolled template

[else]

[[elementor-template id="53371"]] // Unenrolled template

[/wpf_user_can_access]

Displaying content based on user meta values

As of January 2021, WP Fusion includes a new [[user_meta_if]] shortcode.

This can be used to conditionally display content based on user meta values of the current user, similar to Liquid Tags with Shopify or Drip.

Note: By their nature, shortcodes are difficult to work with. We recommend making use of these shortcodes sparingly, if at all. One typo in the attributes will make the whole shortcode not work. WP Fusion includes many PHP filters to control the visibility of content and these are generally easier to work with.

Available attributes

The [[user_meta_if]] shortcode accepts 5 parameters:

  • field= The meta field on the current user to check (any value from the wp_users or wp_usermeta table)
  • value= The value to compare the user meta field against
  • field_format= The formatting for the user meta field. Can be any PHP function, for example strtotime(), strtolower(), or a custom function.
  • value_format= The formatting for the field to check against. Can be any PHP function.
  • compare= The comparison. Default is =, can be any comparison operator

Simple example

The simplest example is comparing a user meta value to a text value. For example to check a user’s role:

[[user_meta_if field="role" value="customer"] Welcome back, Customer! [/user_meta_if]]

Or to check someone’s BuddyPress account status:

[[user_meta_if field="account_status" value="approved"]Thanks for verifying your email address![/user_meta_if]]

Numeric comparisons

As another example, you can compare numeric values using the compare= attribute, for example with lifetime value:

[[user_meta_if field="lifetime_value" value="100" compare=">"] Hey hey, big spender! [/user_meta_if]]

In that example the content will only be displayed if the user’s lifetime_value field is greater than 100.

Note that you must have a field called lifetime_value for the user in your database. WP Fusion does not track lifetime values.

Date comparisons

You can get a little more fancy by making use of the field_format= and value_format= attributes, along with the strtotime() function.

For more info on valid inputs to strtotime() see the PHP manual.

[[user_meta_if field="next_exam_date" field_format="strtotime" value="-5 days" value_format="strtotime" compare=">="]
Your exam is coming up soon, take the checklist to make sure you're ready on the big day!
[/user_meta_if]]

This one is a bit complicated. Let’s break it down:

  • field=”next_exam_date” This says we should use the field next_exam_date from the wp_usermeta table. It can be in any date string. For example 2021-01-25 8:15am
  • field_format=”strtotime” This converts the exam date into a timestamp for comparison, i.e. 1611558900
  • value=”-5 days” This is the value to compare against, “five days ago” relative to now
  • value_format=”strtotime” This runs the value through strtotime() which gives us a timestamp for five days ago
  • compare=">="The greater than or equal to comparison. The condition will only be met if the student’s next exam date is greater than or equal to 5 days ago.

The end result is that the message will be hidden until five days before the student’s next exam date, at which point it will be shown.

Updating data

You can insert a shortcode into your pages to force an update of a users tags and/or meta data before the rest of the page is displayed.

This can be used to force a refresh of data from your CRM before displaying content using the [wpf] or [user_meta] shortcodes.

To force an update of the current user’s tags, use:

[wpf_update_tags]

To force an update of the current user’s meta data, use:

[wpf_update_meta]
Note that these shortcodes will trigger an API call to your CRM and slow down your page load by several seconds. They should be used sparingly, if at all.

Was this helpful?