EME provides the use of conditional tags and for-loops.
Conditional tags
Sometimes you want info only to be shown dependent on some conditions. In almost all formatting settings, you can use a special shortcode called [eme_if]
that allows these kind of decisions:
You can use all placeholders in the if-part, just by prepending them with “ESC”, e.g you could use this for single event formatting:
#j, #M #Y – #H:#i
#_NOTES
[eme_if tag='#ESC_ATT{color}' value='red']
color: #_ATT{color} [/eme_if]
[eme_if tag='#ESC_ATT{price}']
price: #_ATT{price} [/eme_if]
[eme_if tag='#ESC_TOWN']
the town is: #_TOWN [/eme_if]
[eme_if tag="#ESC_ATT{Image URL}"]
<img src=”#_ATT{Image URL}” /> [/eme_if]
[eme_if tag="#ESC_STARTDATE" value="#ESC_ENDDATE"]
The start and end date of this event are the same, so just showing start: #_STARTDATE [/eme_if]
[eme_if tag="#ESC_{j M Y}" value="#ESC@_{j M Y}"]
The start and end date of this event are the same: #j #M #Y [/eme_if]
[eme_if tag="#ESC_{j M Y}" notvalue="#ESC@_{j M Y}"]
This date is only printed if different from start date: #@_{- j M Y} [/eme_if]
The possible conditions you can test for are:
- Nothing, you then just check that the placeholder/string mentioned in the
tag
is not empty:[eme_if tag='#ESC_TOWN']
is_empty=1
checks that the placeholder/string mentioned in thetag
is in fact empty:[eme_if tag='#ESC_TOWN' is_empty=1]
value
oreq
checks if the placeholder/string mentioned in thetag
is the same as the one mentioned invalue
. Example:[eme_if tag='#ESC_ATT{color}' eq='red']
color: #_ATT{color}[/eme_if]
notvalue
orne
checks if the placeholder/string mentioned in thetag
has a value different than the one mentioned invalue
lt
checks if the numerical value of the placeholder/string mentioned in thetag
has a value lower than the one mentioned inlt
. Example:[eme_if tag='#ESC_ATT{color}' eq='red']
color: #_ATT{color}[/eme_if]
le
checks if the numerical value of the placeholder/string mentioned in thetag
has a value lower than or equal to the one mentioned inlt
. Example:
[eme_if tag='#_AVAILABLESEATS' lt='5']Less than 5 seats left[/eme_if]
gt
checks if the numerical value of the placeholder/string mentioned in thetag
has a value bigger than the one mentioned ingt
ge
checks if the numerical value of the placeholder/string mentioned in thetag
has a value bigger than or equal to the one mentioned ingt
contains
checks if the value of the placeholder/string mentioned in thecontains
occurs in the one mentioned intag
notcontains
checks if the value of the placeholder/string mentioned in thenotcontains
doesn’t occur in the one mentioned intag
incsv
checks if the value of the placeholder/string mentioned in theincsv
occurs in the comma-separated list mentioned intag
notincsv
checks if the value of the placeholder/string mentioned in theincsv
does NOT occur in the comma-separated list mentioned intag
As extra, next to the regular placeholders you can use, I added some extra placeholders:
#_IS_AUTHOR
(‘1’ if you’re the author for the event, ‘0’ otherwise)#_IS_CONTACTPERSON
(‘1’ if you’re the contact person for the event, ‘0’ otherwise)#_IS_AUTHOR_OR_CONTACTPERSON
(‘1’ if you’re the author or contact person for the event, ‘0’ otherwise)#_IS_PRIVATE_EVENT
(‘1’ if the event is a private event, ‘0’ otherwise)#_IS_LOGIN_REQUIRED
(‘1’ if the event is a private event or the RSVP settings require WP membership, ‘0’ otherwise)#_IS_RSVP_ENABLED
(‘1’ if the event is RSVP-able, ‘0’ otherwise)#_IS_RSVP_PASSWORD_ENABLED
(‘1’ if the event is RSVP-able and password protected, ‘0’ otherwise)#_IS_RECURRENT_EVENT
(‘1’ if the event is part of a recurrence, ‘0’ otherwise)#_IS_REGISTERED
(‘1’ if WP user has already registered for the event, ‘0’ otherwise)#_IS_REGISTERED_PAID
(‘1’ if WP user has already registered for the event and has paid for it, ‘0’ otherwise)#_IS_REGISTERED_PENDING
(‘1’ if WP user has already registered for the event but waiting approval, ‘0’ otherwise)#_IS_REGISTERED_APPROVED
(‘1’ if WP user has already registered for the event and is approved, ‘0’ otherwise)#_IS_MULTIPRICE
(‘1’ if the event is a multiprice event, ‘0’ otherwise)#_IS_MULTISEAT
(‘1’ if the event is a multiseat event, ‘0’ otherwise)#_IS_MULTIDAY
(‘1’ if the event start date is different from the end date, ‘0’ otherwise)#_IS_MULTIBOOKING
(‘1’ when actually doing a multi-booking, not when updating/confirming/deleting a booking)#_IS_ALLDAY
(‘1’ if the event is a all-day event, ‘0’ otherwise)#_IS_ATTENDANCE
(‘1’ if the event only takes rsvp attendances, ‘0’ otherwise)#_IS_INVITE_ONLY
(‘1’ if the event allows registration through invitation links, ‘0’ otherwise)#_IS_INVITE_URL
(‘1’ if registration form is shown through a invite url, ‘0’ otherwise), this allows to show/hide fields for invites-only.#_IS_RSVP_STARTED
(‘1’if the registration period has begun, ‘0’ otherwise)#_IS_RSVP_ENDED
(‘1’if the registration period has passed, ‘0’ otherwise)#_IS_FIRST_RECURRENCE
(‘1’if the event is the first event in a recurrence series, ‘0’ otherwise)#_IS_LAST_RECURRENCE
(‘1’if the event is the last event in a recurrence series, ‘0’ otherwise)#_IS_ONGOING_EVENT
(‘1’if the event is ongoing, ‘0’ otherwise)#_IS_ENDED_EVENT
(‘1’if the event has ended, ‘0’ otherwise)
A number of generic placeholders can be used even outside event/location/member formatting templates (in other words: when you use eme_if standalone on a wordpress page). See https://www.e-dynamics.be/wordpress/generic-placeholders/ for those (with examples).
Using this conditional tag requires some playing around …
I also added [eme_if2], [eme_if3], [eme_if4] … till [eme_if15], if you want to use more than one level of logic (wordpress doesn’t like a shortcode with the same name enclosed in another one).
For-loops
Using the shortcode [eme_for]
, you can use a for-loop to show specific info a number of times. Usage for this might be e.g. to show images for the number of seats taken, instead of a number.
The required options are either:
min=x
with ‘x’ being the lowest number in the for-loopmax=y
with ‘y’ being the highest number in the for-loop
or:
list=xxx
xxx being a list of values, separated by a separator specified by the sep-option (see below)sep=y
the separation char for the list above (default “,”)
In both shortcodes you can use the extra following placeholders to play with the values of the loop: #_LOOPCOUNTER and #_LOOPVALUE
Some examples: [/eme_for]
[eme_for min='1' max='5']Do anyting here, it will be repeated 5 times[/eme_for]
[eme_for min='1' max='#_RESERVEDSEATS']Do anyting here, it will be repeated for each reserved seat[/eme_for]
An example where a custom formfield containing multiple values is being looped:
[eme_for list="#_FIELD{mycustomlist}" sep="||" ]This is the #_LOOPCOUNTER value in the list: #_LOOPVALUE
The latter shows that you can also loop through e.g. the categories of an event of a custom location field and show that info in any way you want on a page. If you want to use the loop value for an url, you can also use #URL_LOOPVALUE