Raising Manager automatically assigns volunteers to stores for one or more days of raising in 10 seconds, while respecting their choices, their availabilities, and maximizing the number of stores in which the raising will take place.
Download Raising Manager for free
You can install Raising Manager through the Add Plugins page of the Plugins menu in WordPress (Plugins => Add New => Upload Plugin). Upload the plugin file without unzipping it. You can also install it like this:
Once you have installed Raising Manager:
When you upgrade Raising Manager, you don't lose any settings or any data.
You can upgrade Raising Manager through the Plugins menu in WordPress, and through the WordPress Updates page of the Dashboard menu in WordPress (Dashboard => Updates), or through the Add Plugins page of the Plugins menu in WordPress (Plugins => Add New => Upload Plugin, upload the plugin file without unzipping it). You can also upgrade it like this:
You don't need to deactivate and reactivate the plugin.
You can choose to automatically install all the upgrades of Raising Manager as soon as they become available, by checking the Automatically upgrade Raising Manager box of the Upgrade module in the Options page of Raising Manager. To make sure it works well, enter your FTP credentials in your wp-config.php file, like this:
define('FTP_HOST', 'your-ftp-host');
define('FTP_USER', 'your-ftp-username');
define('FTP_PASS', 'your-ftp-password');
If it still doesn't work, make sure the PECL Zip extension is enabled on the server that hosts your website.
To display a content restricted to volunteers, insert into your posts/pages/widgets a code like this:
[raising-content]Content displayed if you are logged in as a volunteer[/raising-content]
You can also define a content that will be displayed if the user is not logged in as a volunteer, like this:
[raising-content]
Content displayed if you are logged in as a volunteer[other]
Content displayed if you are not logged in as a volunteer
[/raising-content]
You can create pages restricted to users logged in as volunteers, and redirect the users to another page if they're not logged in as volunteers. If you use Raising Manager on a non-WordPress static website, follow these instructions.
Note: If you are logged in as an administrator or editor, you will not be redirected.
Create a new page in WordPress. In the edit page of this page, answer the questions of the Volunteer Area module. You can also do this:
Create the raising custom field (if you don't see the module of custom fields, follow these instructions, or click on Screen Options at the top right of the page and check the Custom fields box in order to display it) and enter as the value a code like this:
[raising-redirection condition=condition url=URL]
by replacing URL with the URL to which you want to redirect the user and condition with:
For example, in the edit page of the page containing your login form, create the raising custom field and enter as the value a code like this:
[raising-redirection condition=session url=URL]
When she/he's logged in as a volunteer, the user will be immediately redirected to the URL.
To understand how to create your pages relating to raising, refer to this section.
To logout the volunteer, she/he must click on a link that points to urlindex.php?action=logout, where url is the URL of the raising-manager directory (in your plugins directory). The logged out volunteer is redirected to your home page.
Your logout URL should look like this:
https://www.your-domain-name.com/wp-content/plugins/raising-manager/index.php?action=logout
You can create a logout page with a custom redirection URL. Create a new page in WordPress. In the edit page of this page, create the raising custom field and enter as the value a code like this:
[raising-redirection action=logout url=URL]
by replacing URL with the URL to which you want to redirect the user.
Access to this page will have the effect of logout the volunteer and redirect her/him to the specified URL.
If you use Raising Manager on a non-WordPress static website, you can't use custom fields. To replace them, you must insert these lines of code into the PHP file of your webpage:
add_shortcode('raising-redirection', create_function('$atts', 'include_once raising_path("shortcodes.php"); return raising_redirection($atts);'));
$raising = '[your-shortcode]'; do_shortcode($raising);
just after this line:
include_once $file;
by replacing [your-shortcode] with a shortcode allowing to redirect the user.
If your page contains a login form, you must also insert this line of code:
<?php $redirection = do_shortcode($raising); if ($redirection!= '') { echo '<script>window.location = \''.$redirection.'\';</script>'; } ?>
just after this line:
<?php wp_footer(); ?>
Your volunteers can have 3 statuses: Active, Inactive and Deactivated. An active volunteer can login. At the opposite, an inactive (or deactivated) volunteer can't.
You can choose the status assigned to your volunteers upon their registration. If they're inactive, you will must activate them manually, or send them an activation link.
You can also deactivate your volunteers at any time.
The activation confirmation/notification emails are sent only when the volunteer status moves from Inactive to Active, and the deactivation notification email is sent only when the volunteer has been deactivated.
If when they register, your volunteers are inactive, you can send them an activation link so they can activate their account. To send your volunteers an activation URL, use the following code:
[raising-activation-url]
In the Body field of your registration confirmation email, you can insert a code like this:
Click on the link below to activate your volunteer account:
[raising-activation-url]
You can choose to automatically login your volunteers after their registration through the registration form of Raising Manager. If your volunteers are active when they register, they will be logged in immediately. Otherwise, they will be logged in immediately after clicking on their activation link.
To send your volunteers a one-click login URL, use the following code:
[raising-login-url]
In the Body field of your registration confirmation email, you can insert a code like this:
Click on the link below to login in one click:
[raising-login-url]
To display an information about the volunteer, insert into your posts/pages/widgets a code like this:
[volunteer information]
by replacing information with:
Example:
Your login name: [volunteer login]
You can specify a text that will be displayed instead of the information when this one is empty, using the default attribute, like this:
[volunteer information default="text"]
Don't forget to include the quotes at the beginning and the end of the default value.
You can specify a PHP function that will be applied to the information before this one is displayed, using the filter attribute, like this:
[volunteer information filter=function]
Replace function by the name of the function you want to apply.
Sometimes, the information is an English word. You can translate it into the language of your website by entering i18n as the value for the filter attribute.
Example:
Your status: [volunteer status default="inactive" filter=i18n]
It is possible to specify several functions for the filter attribute, by separating the different functions by /
, like this:
[volunteer information filter=function1/function2/…/functionN]
The functions will be applied in the specified order.
To display an information about a store, insert into your posts/pages/widgets a code like this:
[store information id=N]
by replacing N with the ID of the store and information with:
Example:
Name: [store name id=N]
You can specify a text that will be displayed instead of the information when this one is empty, using the default attribute, like this:
[store information default="text" id=N]
Don't forget to include the quotes at the beginning and the end of the default value.
You can specify a PHP function that will be applied to the information before this one is displayed, using the filter attribute, like this:
[store information filter=function id=N]
Replace function by the name of the function you want to apply.
It is possible to specify several functions for the filter attribute, by separating the different functions by /
, like this:
[store information filter=function1/function2/…/functionN id=N]
The functions will be applied in the specified order.
To display an information about a planning, insert into your posts/pages/widgets a code like this:
[planning information id=N]
by replacing N with the ID of the planning and information with:
Example:
Comment: [planning comment id=N]
You can specify a text that will be displayed instead of the information when this one is empty, using the default attribute, like this:
[planning information default="text" id=N]
Don't forget to include the quotes at the beginning and the end of the default value.
You can specify a PHP function that will be applied to the information before this one is displayed, using the filter attribute, like this:
[planning information filter=function id=N]
Replace function by the name of the function you want to apply.
It is possible to specify several functions for the filter attribute, by separating the different functions by /
, like this:
[planning information filter=function1/function2/…/functionN id=N]
The functions will be applied in the specified order.
For each store, we need to know the minimum number of volunteers needed (present at the same time) to do the raising, and the maximum number at which the addition of an extra volunteer has a negative impact because:
Generally, the maximum number is twice the minimum number.
The assignment algorithm can have 2 goals:
If the raising is held over two weekends instead of one, it's best to maximize the number in order to limit the number of stores for which the raising will have to be rescheduled a few days later.
If it's held over a single weekend, it's best to maximize the estimation of the quantity of products that will be raised. For each store, the software calculates an estimation of the quantity of products that will be raised, based on the raisings that have taken place in the store over the last two years. It multiplies the average quantity per minute of products raised by the duration in minutes during which the raising will be done in the store. If no raisings have been made from the store in the last two years, the software considers its average quantity per minute to be equal to the average quantity per minute of the stores for which at least one raising has been made in the last two years.
In order to help reach the goal, the assignment algorithm contains several sub-steps called New trial. The higher the number of trials, the higher the execution time of the algorithm, but this helps to reach the goal.
For a simple simulation intended to detect problems well in advance of the raising (in order to better target the recruitment of volunteers and the negotiation with current volunteers), it's best to run a reasonable number of trials to get a quick result. If the simulation is intended to generate the final plannings, it's better to run a high number of trials.
The step 5 of the algorithm assigns additional volunteers to stores beyond those required to do the raising. For a simple simulation intended to detect problems well in advance of the raising (in order to better target the recruitment of volunteers and the negotiation with current volunteers), this step is of little use, so you may want to uncheck the Execute step 5 box to get a quick result.
When a volunteer is assigned to a store on one day, it may reduce her/his availability the day before and the day after, if the maximum total duration (per period of 2 consecutive days) that she/he agrees to participate is too low. For this reason, when a simulation is launched for several days, the first 4 steps of each day are executed first, before moving on to the fifth.
For each raising date and for each period of the day, the time offered by a volunteer is equal to the time she/he agrees to participate. The time offered by this volunteer for the entire day may be less than the sum of the time offered during each period of the day, because the maximum amount of time in a row that the volunteer agrees to participate must be taken into account.
For each raising date and for each period of the day, the time required by a store is equal to the product of the time that store agrees to participate and the minimum number of volunteers (present at the same time) required to properly do the raising.
Example:
For a certain raising date, a store agrees to participate during the entire time it is open (from 9:00 to 20:00). Throughout the day, at least 3 volunteers must be present to do a proper raising. The time required for this day is therefore 33 hours (10.5 hours in the morning (9:00-12:30), 13.5 hours in the afternoon (12:30-17:00), and 9 hours in the evening (17:00-20:00)). Only 3 volunteers can be assigned to this store, provided that each volunteer is present in the store from 9:00 to 20:00. Alternatively, 7 volunteers can be assigned: one who stays in the store from 9:00 to 20:00, and 6 others who will be present only during one period of the day.
No matter how many volunteers are assigned to that store, the sum of the time they'll spend there must be greater than or equal to the time required by that store, unless some absences are tolerated.
The Simulation page of Raising Manager shows, for each future raising date and for each period of the day, the sum of the times offered by each volunteer, the sum of the times required by each store, and the quotient of these two numbers.
The Time offered/Time required ratio is a good indicator of the possibility of covering all stores that agree to participate. It should be as high as possible. If it's less than 1, we're in the shit because it will be impossible to cover all of them, unless some absences are tolerated. If it's greater than 2, it's likely that all stores can be covered, and the maximum number of volunteers can be reached for most of these stores.
To display a counter, insert into your posts/pages/widgets a code like this:
[raising-counter data=data limit=L]
Data: [number][/raising-counter]
by replacing L with a positive number and data with:
When the limit is reached, the content between [raising-counter data=data limit=L]
and [/raising-counter]
disappears. You can format this content as any content of your website. The limit attribute is optional. If you don't use it, the content will not disappear:
[raising-counter data=data]
Data: [number][/raising-counter]
You can insert the [number]
shortcode as many times as you want between [raising-counter data=data limit=L]
and [/raising-counter]
. If you don't insert it, Raising Manager allows you to schedule a content disappearance without displaying a counter:
[raising-counter data=data limit=L]
When the data reaches [limit], this sentence will disappear!
[/raising-counter]
You are not limited to the [number]
shortcode. You can use the following shortcodes:
[limit]
to display the limit[number]
to display the data[remaining-number]
to display the difference between the limit and the dataThe filter attribute (defined here) is also available for these shortcodes.
If you want to schedule a content substitution, insert into your posts/pages/widgets a code like this:
[raising-counter data=data limit=L]
Data: [number][after]The limit is reached.[/raising-counter]
by replacing L with a positive number.
Insert the content you want to substitute between [after]
and [/raising-counter]
. When the limit is reached, the content between [raising-counter data=data limit=L]
and [after]
disappears, and the content between [after]
and [/raising-counter]
appears. The content between [after]
and [/raising-counter]
is never sent to the browser until the limit is reached.
You can insert the [number]
shortcode as many times as you want between [raising-counter data=data limit=L]
and [/raising-counter]
. If you don't insert it, Raising Manager allows you to schedule a content substitution without displaying a counter:
[raising-counter data=data limit=L]
The limit will be reached soon.
[after]The limit is reached.[/raising-counter]
It is possible to specify several limits for the limit attribute, by separating the different limits by /
, like this:
[raising-counter data=data limit=50/100]
The first limit will be reached soon.
[after]The second limit will be reached soon.
[after]The second limit has been reached.[/raising-counter]
You can use the following shortcodes:
[limit]
to display the current limit[number]
to display the difference between the current data and the previous limit[remaining-number]
to display the difference between the current limit and the current data[total-limit]
to display the last limit of the limit attribute[total-number]
to display the current data[total-remaining-number]
to display the difference between the last limit of the limit attribute and the current dataThe filter attribute (defined here) is also available for these shortcodes.
You can count only data recorded during a specific time range by using the range attribute, like this:
[raising-counter data=data range=range limit=L]
Data: [number][/raising-counter]
Replace range with:
To display an option of Raising Manager, insert into your posts/pages/widgets a code like this:
[raising-manager option]
by replacing option with:
This list is not complete and has only the most relevant items. You can find all possible values of option in the initial-options.php file of Raising Manager.
Example:
Initial status of the volunteers: [raising-manager volunteers-initial-status]
You can specify a text that will be displayed instead of the option when this one is empty, using the default attribute, like this:
[raising-manager option default="text"]
Don't forget to include the quotes at the beginning and the end of the default value.
You can specify a PHP function that will be applied to the option before this one is displayed, using the filter attribute, like this:
[raising-manager option filter=function]
Replace function by the name of the function you want to apply.
Sometimes, the option is an English word. You can translate it into the language of your website by entering i18n as the value for the filter attribute.
Example:
Initial status of the volunteers: [raising-manager volunteers-initial-status filter=i18n]
It is possible to specify several functions for the filter attribute, by separating the different functions by /
, like this:
[raising-manager option filter=function1/function2/…/functionN]
The functions will be applied in the specified order.
You can encrypt the URLs. The encryption key and the validity duration of encrypted URLs are configurable through the Options page of Raising Manager. Enter a random string (difficult to guess) into the Encryption key field.
To send to your volunteers an encrypted activation URL, use the following code:
[raising-activation-url filter=encrypt-url]
instead of this one:
[raising-activation-url]
In the Body field of your registration confirmation email, you can insert a code like this:
Click the link below to activate your volunteer account:
[raising-activation-url filter=encrypt-url]
You have [raising-manager encrypted-urls-validity-duration] hours to do it. Then this link will no longer be valid.
You can insert shortcodes into Sender, Receiver, Subject and Body fields of emails to display informations about the volunteer. These shortcodes are simply the same as those presented in the Display Of Informations About The Volunteer section.
You can also insert in these fields all shortcodes available on your website.
If you register the volunteer as a WordPress user, you can insert shortcodes into these fields in order to display informations (login name and password for example) about the user. These shortcodes are presented in this section.
Name <email@address>, Reply-To: Reply To Name <reply-to-email@address>
You can also enter several email addresses separated with commas in the Receiver field of emails. And you can insert HTML code into the Body field of emails.
For a variety of reasons (server configuration of the website sending the emails, spam filters…), emails are sometimes not received by their recipients. So in order to ensure that the volunteers know their assignments for the upcoming raising, you can take at least one of the following precautions:
Raising Manager allows you to subscribe your volunteers to an autoresponder list. You must make the settings shown in this section so that it works.
For the following autoresponders, you must enter the ID of the list into the List field of the Autoresponders module:
For GetResponse, enter the TOKEN key of the list. For MailerLite, enter the ID of the group. You can get this information in this page by logging into your MailerLite account.
You can find the ID of a MailChimp list in the List name & defaults page.
You can allow the user to choose an autoresponder list by inserting a code like this one into the Code field of your form:
<p><label><strong>List:</strong> [select autoresponder-list]
[option value=list1]List 1[/option]
[option value=list2]List 2[/option]
…
[option value=listN]List N[/option]
[/select]</label></p>
Replace list1, list2… listN with the IDs or names of the lists.
You can also allow her/him to subscribe or not to an autoresponder list, by inserting a code like this one into the Code field of your form:
<p><label>[input subscribed-to-autoresponder value=yes] Subscribe to this list</label></p>
You must make some adjustments so that Raising Manager works with AWeber. You have two methods. If the first doesn't work, try the second.
First method:
Go to this page to get your authorization code and copy it to the API key field in the AWeber module of the Options page. Raising Manager will automatically extract your API key from it when you click a button to update your options.
Second method:
Go to your AWeber account, place your pointer on List Options, click on Email Parsers in the dropdown list that appears and then click on add new at the bottom of the page.
Enter what you want into the Description field and insert this code into the Trigger Rule field:
From:[^\n|.]+wordpress\@domain\.extension
by replacing domain with the domain name of your website (without the extension) and extension the extension of your domain name (without the dot).
If your domain name (with the extension) contains more than 35 characters, insert this code into the Trigger Rule field instead of the previous code:
From:[^\n|.]+w\@domain\.extension
Insert this code into the Rule 1 field:
\n[>\s]*Email:\s+(.+?)\n
In the Store In field to the right of the Rule 1 field, select Email.
Insert this code into the Rule 2 field:
\n[>\s]*Name:\s+(.+?)\n
In the Store In field to the right of the Rule 2 field, select Name.
Insert this code into the Rule 3 field:
\n[>\s]*Referrer:\s+(.+?)\n
In the Store In field to the right of the Rule 3 field, select Ad Tracking.
Click on Save to record your parser. Then edit it, check the Enable parser for all lists in this account box and click on Save to enable your parser for all lists of your AWeber account.
You must enter the API key of your Brevo account in the Autoresponders integration module of the Options page of Raising Manager so that Raising Manager works with Brevo. You can get your API key by logging into your Brevo account.
You have no adjustment to make so that Raising Manager works with CyberMailing, but do not enable the protection against bots.
You must enter the API key of your GetResponse account in the Autoresponders integration module of the Options page of Raising Manager so that Raising Manager works with GetResponse. You can get your API key by logging into your GetResponse account.
You must enter the API key of your MailChimp account in the Autoresponders integration module of the Options page of Raising Manager so that Raising Manager works with MailChimp. You can get your API key by logging into your MailChimp account.
You must enter the API key of your MailerLite account in the Autoresponders integration module of the Options page of Raising Manager so that Raising Manager works with MailerLite. You can get your API key in this page by logging into your MailerLite account.
You must enter the URL of your Sendy installation and your API key in the Autoresponders integration module of the Options page of Raising Manager so that Raising Manager works with Sendy. You can get your API key in the Settings page of Sendy.
You must enter the ID of your SG Autorépondeur account and your activation code in the Autoresponders integration module of the Options page of Raising Manager so that Raising Manager works with SG Autorépondeur. You can get these informations by logging into your SG Autorépondeur account.
If it doesn't work, make sure the cURL extension is enabled on the server that hosts your website.
You can register your volunteers as WordPress users. Upon registration, the user's login name of the volunteer is her/his volunteer's login name, if there is no WordPress user with the same login name. Otherwise, a number will be added to the end.
If the user registers to your volunteer area while logged in as a WordPress user, or by specifying an email address identical to that of an existing WordPress user, Raising Manager will not create a new WordPress user account.
You can give to the volunteer her/his login name and her/his password, by inserting a code like this one in the Body field of your registration confirmation email:
Your login name: [user login]
Your password: [user password]
You can insert shortcodes into the Sender, Receiver, Subject and Body fields of registration confirmation/notification emails in order to display informations about the user. These shortcodes are presented in the Display Of Informations About The User section.
The connection as a WordPress user automatically creates a connection as a volunteer, if the user is not an administrator (or editor), also has a volunteer account and if the email addresses of the two accounts are identical. And under the same conditions, the connection as a volunteer automatically creates a connection as a WordPress user.
To display an information about a WordPress user, insert into your posts/pages/widgets a code like this:
[user information]
by replacing information with:
Example:
Your login name: [user login]
You can specify a text that will be displayed instead of the information when this one is empty (this is generally the case when the user is not logged in as a WordPress user), using the default attribute, like this:
[user information default="text"]
Don't forget to include the quotes at the beginning and the end of the default value.
You can specify a PHP function that will be applied to the information before this one is displayed, using the filter attribute, like this:
[user information filter=function]
Replace function by the name of the function you want to apply.
It is possible to specify several functions for the filter attribute, by separating the different functions by /
, like this:
[user information filter=function1/function2/…/functionN]
The functions will be applied in the specified order.
You can add custom instructions that will be executed just after the registration of a volunteer, or other events. This allows you, among other things, to subscribe the volunteer to a list of an autoresponder that is not yet supported by Raising Manager.
Some PHP skills are required. In the PHP code field, you can enter a PHP code or the path (relative to the directory in which your wp-config.php file is located) of a PHP file on your website. In the latter case, it's the PHP code of this file that will be executed.
The custom instructions (for the registration of a volunteer) are executed inside the includes/add-volunteer.php file of Raising Manager. You can find where the custom instructions of other events are executed by opening all files of Raising Manager with a text editor like Notepad++ and searching for the string of characters eval( in these files.
The custom instructions of form submission are executed inside the includes/forms/processing.php file of Raising Manager. You can execute different instructions depending on the form by doing a test on the $id variable set in the forms.php file of Raising Manager.
Insert into your posts/pages/widgets the code:
[raising-login-form]
to display the login form[raising-login-compact-form]
to display the compact login form[raising-password-reset-form]
to display the password reset form[raising-profile-form]
to display the profile form[raising-registration-form]
to display the registration form[raising-registration-compact-form]
to display the compact registration form[raising-stores-form]
to display the geographical availability form[raising-times-form]
to display the time availability formThe login form, the password reset form and the registration form appear only if the user is not logged as a volunteer. The profile form, the geographical availability form and the time availability form appear only if the user is logged as a volunteer.
The volunteer can also login by entering her/his email address instead of her/his login name, and reset her/his password by entering her/his login name instead of her/his email address.
To understand how to create your pages relating to raising, refer to this section.
You can redirect the user to a page of your choice when she/he completed the form, by using the redirection attribute:
[raising-login-form redirection=URL]
Replace URL with the URL to which you want to redirect the user.
The redirection attribute is available for all the forms shortcodes.
You can also redirect the user to a specific part of the page where she/he submitted the form, like this:
[your-shortcode-of-form redirection=#your-anchor]
To redirect the user to the top of the form, simply enter # as the value for the redirection attribute:
[your-shortcode-of-form redirection=#]
You can also redirect the user to the page she/he saw just before the current page, if this page belongs to your website, by entering referring-url as the value for the redirection attribute:
[your-shortcode-of-form redirection=referring-url]
If the user just attempted to access a page restricted to volunteers but has been redirected to a login page because she/he was not logged in, you can redirect her/him to this private page when she/he's logged in, by entering private-page as the value for the redirection attribute:
[raising-login-form redirection=private-page]
You can decide, for each of your forms, if the cursor is or not automatically positioned in the first field when the page loads. Insert into your posts/pages/widgets a code like this:
[your-shortcode-of-form focus=yes]
All attributes (except action, id and name) of the <form>
HTML tag are also available for the shortcodes that display a form, with an identical role.
You can customize the forms through the Front Office page of Raising Manager. To customize a form, you must insert into the Code field of this form a special code.
This code is very similar to a normal HTML code, with the exception of the following characteristics:
<form>
tag and the closing </form>
tag are absent.<input />
tag is replaced with the [input]
shortcode.Insert into the Code field a code like this:
[input name]
by replacing name with:
Example:
<p><label><strong>Your first name:</strong> [input first-name]<br />[error first-name]</label></p>
<p><label><strong>Your email address:</strong> [input email-address]<br />[error email-address]</label></p>
<div>[input submit value="Submit"]</div>
The above code displays a form containing a field allowing the user to enter her/his first name, a field allowing her/him to enter her/his email address, and a button allowing her/him to submit the form.
Outside the standard names listed above, you can also replace name with the name you want, provided it contains only lowercase letters, numbers and hyphens, like this:
[input your-name]
All attributes (except id and name) of the <input />
HTML tag are also available for the [input]
shortcode, with an identical role.
Example:
<p><label><strong>Your first name:</strong> [input first-name size=20]<br />[error first-name]</label></p>
<p><label><strong>Your email address:</strong> [input email-address size=30]<br />[error email-address]</label></p>
<div>[input submit value="Submit"]</div>
The above code displays a form containing a field (width of 20 characters) allowing the user to enter her/his first name, a field (width of 30 characters) allowing her/him to enter her/his email address, and a button allowing her/him to submit the form.
You can use the pattern HTML5 attribute to specify a syntax that the field must respect. In your regular expression, replace the [ and ] characters with their corresponding HTML entities: [ and ].
Example:
<p><label><strong>Postcode:</strong>
[input postcode pattern="[0-9]{5,5}" size=20]<br />
[error postcode]</label></p>
<div>[input submit value="Submit"]</div>
Insert into the Code field a code like this:
[textarea name]Content[/textarea]
by replacing Content with the content you want display in the text area before the user completes the form and name with:
Example:
<p><label><strong>Your first name:</strong> [textarea first-name][/textarea]<br />[error first-name]</label></p>
<p><label><strong>Your email address:</strong> [textarea email-address][/textarea]<br />[error email-address]</label></p>
<div>[input submit value="Submit"]</div>
The above code displays a form containing a text area allowing the user to enter her/his first name, a text area allowing her/him to enter her/his email address, and a button allowing her/him to submit the form.
Outside the standard names listed above, you can also replace name with the name you want, provided it contains only lowercase letters, numbers and hyphens, like this:
[textarea your-name]Content[/textarea]
All attributes (except id and name) of the <textarea>
HTML tag are also available for the [textarea]
shortcode, with an identical role.
Example:
<p><label><strong>Your first name:</strong> [textarea first-name cols=20 rows=1][/textarea]<br />[error first-name]</label></p>
<p><label><strong>Your email address:</strong> [textarea email-address cols=30 rows=1][/textarea]<br />[error email-address]</label></p>
<div>[input submit value="Submit"]</div>
The above code displays a form containing a text area (20 columns and 1 row) allowing the user to enter her/his first name, a text area (30 columns and 1 row) allowing her/him to enter her/his email address, and a button allowing her/him to submit the form.
The [select]
shortcode has the same role as the <select>
HTML tag. Insert into the Code field a code like this:
[select name]Content[/select]
by replacing name with:
Example:
<p><label><strong>Your country:</strong> [select country]
[option]Canada[/option]
[option]France[/option]
[option]Ireland[/option]
[/select]</label></p>
<div>[input submit value="Submit"]</div>
The above code displays a form containing a dropdown list allowing the user to select her/his country, and a button allowing her/him to submit the form.
Outside the standard names listed above, you can also replace name with the name you want, provided it contains only lowercase letters, numbers and hyphens, like this:
[select your-name]Content[/select]
To display easily a dropdown list allowing the user to select a country, insert into the Code field the code below:
[country-selector]
All attributes (except id and name) of the <select>
HTML tag are also available for the [select]
and [country-selector]
shortcodes, with an identical role.
The [option]
shortcode has the same role as the <option>
HTML tag. Insert into the Code field a code like this:
[option value="Value of the option"]Name of the option[/option]
If the name and the value of the option are identical, you can also insert into the Code field a code like this:
[option]Name of the option[/option]
Example:
<p><label><strong>Your country:</strong> [select country]
[option]Canada[/option]
[option]France[/option]
[option]Ireland[/option]
[/select]</label></p>
<div>[input submit value="Submit"]</div>
The above code displays a form containing a dropdown list allowing the user to select her/his country, and a button allowing her/him to submit the form.
All attributes of the <option>
HTML tag are also available for the [option]
shortcode, with an identical role.
By default, all form fields are optional. To insert a required field, use a code like this:
[input name required=yes]
by replacing name with one element of this list.
The required attribute is also available for the [textarea]
, [select]
and [country-selector]
shortcodes.
When the user does not complete one of the required fields of the form, or enters an invalid email address, error messages are displayed. You can customize these messages through the Options page of Raising Manager or through the interface of Raising Manager.
Insert into the Code field a code like this:
[error name]
by replacing name with:
Example:
<p><label><strong>Your first name:</strong> [input first-name]<br />[error first-name]</label></p>
<p><label><strong>Your email address:</strong> [input email-address]<br />[error email-address]</label></p>
<div>[input submit value="Submit"]</div>
Outside the standard names listed above, you can also replace name with the name you want, provided it contains only lowercase letters, numbers and hyphens, like this:
[error your-name]
To display the error messages in red, add this code to your CSS stylesheet:
.error { color: #c00000; }
All attributes (except id) of the <span>
HTML tag are also available for the [error]
shortcode, with an identical role.
You can set different error messages for each field of a form, like this:
[error field data-name-message="Your error message"]
by replacing name with:
Example:
<p><label><strong>Your first name:</strong> [input first-name required=yes]<br />[error first-name data-unfilled-field-message="The first name is required."]</label></p>
<p><label><strong>Your email address:</strong> [input email-address]<br />[error email-address data-invalid-email-address-message="The email address is invalid."]</label></p>
<div>[input submit value="Submit"]</div>
The [label]
shortcode has the same role as the <label>
shortcode. Insert into the Code field a code like this:
[label name]Content[/label]
by replacing name with:
Example:
<p>[label first-name]<strong>Your first name:</strong>[/label] [input first-name]<br />[error first-name]</p>
<p>[label email-address]<strong>Your email address:</strong>[/label] [input email-address]<br />[error email-address]</p>
<div>[input submit value="Submit"]</div>
Outside the standard names listed above, you can also replace name with the name you want, provided it contains only lowercase letters, numbers and hyphens, like this:
[label your-name]Content[/label]
All attributes (except for) of the <label>
HTML tag are also available for the [label]
shortcode, with an identical role.
You can use CAPTCHAs in forms. Insert into the Code field a code like this:
[captcha type=type]
by replacing type with:
To use a CAPTCHA of the reCAPTCHA type, you must get a site key and a secret key here and enter these keys in the CAPTCHA module of the Options page of Raising Manager.
The CAPTCHA of the reCAPTCHA v3 type is invisible. For the CAPTCHA of the reCAPTCHA v2 type, you can choose the theme you want to use, like this:
[captcha type=recaptcha theme=theme]
by replacing theme with:
To use a CAPTCHA of the hCaptcha type, you must get a site key and a secret key here and enter these keys in the CAPTCHA module of the Options page of Raising Manager.
You can choose the theme you want to use, like this:
[captcha type=hcaptcha theme=theme]
by replacing theme with:
Example 1 (CAPTCHA of the reCAPTCHA v2 type):
[captcha type=recaptcha theme=dark]
Example 2 (CAPTCHA of the reCAPTCHA v3 type, invisible):
[captcha type=recaptcha3]
Example 3 (CAPTCHA of the Arithmetic operation type):
<p>[captcha type=arithmetic] = [input captcha size=3] (enter your answer in digits)</p>
Example 4 (CAPTCHA of the Reversed string type):
<p>Type the following characters in reverse order:<br />
[captcha type=reversed-string] : [input captcha size=20]</p>
Example 5 (CAPTCHA of the Question type):
<p>[captcha type=question question="Question" answer="Correct answer"] [input captcha size=20]</p>
All attributes of the <span>
HTML tag are also available for the [captcha]
shortcode, with an identical role, only if you don't use a CAPTCHA of the reCAPTCHA type.
You can require the double entry of a form field (email address, password…), like this:
[input confirm-name]
by replacing name with the name of the field that the user must enter a second time.
Example:
<p><label><strong>Your email address:</strong>*<br />
[input email-address size=40 required=yes]<br />[error email-address]</label></p>
<p><label><strong>Confirm your email address:</strong><br />
[input confirm-email-address size=40]<br />[error confirm-email-address]</label></p>
You can require that the volunteer enters her/his current password to change her/his profile or preferences, like this:
[input current-password]
Example:
<p><label><strong>Your current password:</strong>*<br />
[input current-password size=30 required=yes]<br />
[error current-password data-invalid-field-message="The password you entered is incorrect."]</label></p>
To display a button allowing the user to submit the form, insert into the Code field a code like this:
[input submit value="Text of the button"]
by replacing Text of the button with the text of your button.
If you want to use an image, insert a code like this:
[input submit type=image src="URL of the image" alt="Alternative text"]
by replacing URL of the image with the image URL of your button and Alternative text with the text displayed when the image can not be displayed.
You can also use the <button>
HTML tag, like this:
<button type="submit">Text of the button</button>
To display a content restricted to users who have submitted the form without any error, insert into the Code field a code like this:
[validation-content]Content displayed if the user has submitted the form without any error[/validation-content]
You can also define a content that will be displayed if the user has submitted the form and at least one error was generated, like this:
[validation-content]
Content displayed if the user has submitted the form without any error[other]
Content displayed if the user has submitted the form and at least one error was generated
[/validation-content]
Example:
[validation-content]
<p style="color: green;">Your profile has been changed successfully.</p>
[other]<p style="color: red;">[error unavailable-login] [error numeric-login] [error too-short-login] [error too-long-login] [error too-short-password] [error too-long-password] [error unavailable-email-address] [error unfilled-fields] [error invalid-captcha]</p>
[/validation-content]
You can also define a content that will be displayed if the user has not submitted the form, like this:
[validation-content]
Content displayed if the user has submitted the form without any error[other]
Content displayed if the user has submitted the form and at least one error was generated[other]
Content displayed if the user has not submitted the form
[/validation-content]
You can tell the user if the login name she/he chooses is available or not when she/he completes the registration form or the profile form. Insert into the Code field the code below:
[indicator login]
To indicate the availability of her/his email address, insert the code below:
[indicator email-address]
And to indicate the strength of the password she/he chose, insert the code below:
[indicator password]
You can customize the messages displayed by the indicators through the interface of Raising Manager.
All attributes (except id) of the <span>
HTML tag are also available for the [indicator]
shortcode, with an identical role.
Insert into your posts/pages/widgets the code:
[raising-future-plannings]
to display the list of future plannings that concern the volunteer[raising-past-plannings]
to display the list of past plannings that concern the volunteerFor example, this code allows you to display all the plannings of the volunteer:
<div id="plannings">
[raising-future-plannings]
[raising-past-plannings]
</div>
To understand how to create your pages relating to volunteer area, refer to this section.
You can customize the plannings list through the Plannings module of the Front Office page of Raising Manager. You can enter into the Code field some HTML code and all the shortcodes available on your website.
To display a content only if there is at least one planning, insert into the Code field a code like this:
[if planning]Content displayed only if there is at least one planning[/if]
You can also define a content that will be displayed if there is no planning, like this:
[if planning]
Content displayed only if there is at least one planning
[else]Content displayed only if there is no planning[/if]
To repeat a content for each planning of the list, insert into the Code field a code like this:
[foreach planning]Content repeated for each planning of the list[/foreach]
Example:
[foreach planning]
<tr>
<td>[date] ([Weekday])</td>
<td>[store name] - [store address] - [store postcode] [store town]</td>
<td><a href="[planning-url filter=htmlspecialchars]">View/Download</a></td>
</tr>[/foreach]
When you don't use the id attribute of a shortcode, it is automatically set to the IDs of each item of the list.
By default, the future plannings are sorted by date ascending, and the past plannings are sorted by date descending. You can sort them differently by using the orderby and order attributes that work as in the SQL language.
Example:
[foreach planning orderby=id order=asc]
<tr>
<td>[date] ([Weekday])</td>
<td>[store name] - [store address] - [store postcode] [store town]</td>
<td><a href="[planning-url filter=htmlspecialchars]">View/Download</a></td>
</tr>[/foreach]
In this example, the plannings are sorted by ID ascending. You can find all possible values of the orderby attribute in the tables.php file of Raising Manager.
You can personalize the PDF documents sent to the volunteers through the PDF documents module of the Options page of Raising Manager. Some HTML and CSS skills are required. To restore PDF documents as they were when the plugin was installed, empty the Code fields in the PDF Documents module.
This section explains with examples how to create your pages relating to raising (registration page, registration confirmation page, password reset page, login page, profile edit page…). You can create these pages with a single click through the Front Office page of Raising Manager.
To know and understand all the shortcodes used, refer to the Contents Restricted To Volunteers, Pages Restricted To Volunteers, Display Of Informations About The Volunteer, Display Of The Options and Display Of Forms sections.
The creation of pages relating to raising needs custom fields. If you don't see the module of custom fields, follow these instructions, or click on Screen Options at the top right of the page and check the Custom fields box in order to display it.
To allow users to register as volunteers, create a new page in WordPress. In the edit page of this page, create the raising custom field and enter as the value a code like this:
[raising-redirection condition=session url=URL]
by replacing URL with the URL to which you want to redirect the user if she/he's logged in as a volunteer (URL of the volunteers home page for example).
In the text area of this page, through the Text tab, enter a code like this:
<p>Registration is fast and free!</p>
[raising-registration-form]
The [raising-registration-form]
shortcode displays the registration form. To know the options relating to this form, refer to this section.
When a user registers as a volunteer, she/he's redirected to a registration confirmation page. You can customize the URL of this page through the Options page of Raising Manager.
Your volunteers can forget their password. To allow them to reset it, create a new page in WordPress. In the edit page of this page, create the raising custom field and enter as the value a code like this:
[raising-redirection condition=session url=URL]
by replacing URL with the URL to which you want to redirect the user if she/he's logged in as a volunteer (URL of the volunteers home page for example).
In the text area of this page, through the Text tab, enter a code like this:
<p>If you have forgotten your password, you can reset it and your new password will be sent by email.</p>
[raising-password-reset-form]
<p style="text-align: center;"><a href="URL of the registration page">Register</a> | <a href="URL of the login page">Login</a></p>
The [raising-password-reset-form]
shortcode displays the password reset form.
To allow your volunteers to login, create a new page in WordPress. In the edit page of this page, create the raising custom field and enter as the value a code like this:
[raising-redirection condition=session url=URL]
by replacing URL with the URL to which you want to redirect the user if she/he's logged in as a volunteer (URL of the volunteers home page for example).
In the text area of this page, through the Text tab, enter a code like this:
[raising-login-form]
<p style="text-align: center;"><a href="URL of the registration page">Register</a> | <a href="URL of the password reset page">Lost password</a></p>
The [raising-login-form]
shortcode displays the login form.
You can create a logout page with a custom redirection URL. Create a new page in WordPress. In the edit page of this page, create the raising custom field and enter as the value a code like this:
[raising-redirection action=logout url=URL]
by replacing URL with the URL to which you want to redirect the user.
Access to this page will have the effect of logout the volunteer and redirect her/him to the specified URL.
When your volunteers login, you can redirect them to a page of your choice. Create a new page in WordPress. In the edit page of this page, create the raising custom field and enter as the value a code like this:
[raising-redirection condition=!session url=URL]
by replacing URL with the URL to which you want to redirect the user if she/he's not logged in as a volunteer (URL of the login page for example).
In the text area of this page, through the Text tab, enter a code like this:
<p>Welcome to the volunteer area, [volunteer first-name]!</p>
To allow your volunteers to edit their personal informations, create a new page in WordPress. In the edit page of this page, create the raising custom field and enter as the value a code like this:
[raising-redirection condition=!session url=URL]
by replacing URL with the URL to which you want to redirect the user if she/he's not logged in as a volunteer (URL of the login page for example).
In the text area of this page, through the Text tab, enter a code like this:
<p style="text-align: center;">[volunteer-data-download-link text="Download your personal data"]</p>
<p>You can edit your personal informations. Fields marked with * are required.</p>
[raising-profile-form]
The [raising-profile-form]
shortcode displays the profile form.
To allow your volunteers to indicate their availabilities for future raisings, create a new page in WordPress. In the edit page of this page, create the raising custom field and enter as the value a code like this:
[raising-redirection condition=!session url=URL]
by replacing URL with the URL to which you want to redirect the user if she/he's not logged in as a volunteer (URL of the login page for example).
In the text area of this page, through the Text tab, enter a code like this:
[raising-times-form]
[raising-stores-form]
To allow your volunteers to view/download their plannings, create a new page in WordPress. In the edit page of this page, create the raising custom field and enter as the value a code like this:
[raising-redirection condition=!session url=URL]
by replacing URL with the URL to which you want to redirect the user if she/he's not logged in as a volunteer (URL of the login page for example).
In the text area of this page, through the Text tab, enter a code like this:
<div id="plannings">
[raising-future-plannings]
[raising-past-plannings]
</div>
To facilitate the navigation of your volunteers in the pages that are restricted to them, you can display a navigation menu into these pages. Insert this code:
[raising-pages-menu]
You can customize this navigation menu through the Menu module of the Front Office page of Raising Manager.
The GDPR, which came into force on May 25, 2018, introduces the right to portability, which offers individuals the ability to receive their personal data, in a structured, commonly used and machine-readable format.
To allow your volunteers to download a CSV file containing their personal data, insert into one of the pages of your volunteer area a code like this:
[volunteer-data-download-link text="Download your personal data"]
Don't forget to include the quotes at the beginning and the end of the value of the text attribute.
All attributes (except href) of the <a>
HTML tag are also available for the [volunteer-data-download-link]
shortcode, with an identical role.
You can, through the Back Office page of Raising Manager, add an unlimited number of custom fields in the Add Store, Add Volunteer and Add Planning pages to record additional data. Enter a name and a key for each custom field.
For example, if you want to save the favorite color of the volunteer, enter Favorite color as the name and favorite-color as the key.
To display a custom information about a volunteer, insert into your posts/pages/widgets a code like this (don't forget the custom-field- prefix just before the key):
[volunteer custom-field-key]
by replacing key with the key of the custom field.
To allow the volunteer to fill this field, insert into the Code field of your forms a code like this (don't forget the custom-field- prefix just before the key):
[input custom-field-key]
by replacing key with the key of the custom field.
Raising Manager is designed to work with a WordPress site, but you can also use it with a non-WordPress static website, by following the instructions below.
Download WordPress and install it on your website. You will not use WordPress as a CMS to manage the pages of your website, but as an interface allowing you to manage your raisings.
If the files of your website have the extension .htm or .html, replace it with .php. Open them with a text editor like Notepadd++, click on File, and then click on Save as…. A window opens. In the Type field, select PHP and click on Save.
You can also recreate these files with this model.
To load the WordPress functions in the files of your website, add on top of these files the following code:
<?php
$wordpress_directory = 'WordPress directory';
$file = $wordpress_directory.'/wp-load.php';
while (strstr($file, '//')) { $file = str_replace('//', '/', $file); }
if (substr($file, 0, 1) == '/') { $file = substr($file, 1); }
$i = 0; while ((!file_exists($file)) && ($i < 8)) { $file = '../'.$file; $i = $i + 1; }
include_once $file;
?>
Replace WordPress directory with the name of the directory where you installed WordPress. If you installed it at the root of your website, replace this line:
$wordpress_directory = 'WordPress directory';
by this one:
$wordpress_directory = '';
Insert this line of code:
<?php wp_head(); ?>
just before the </head>
tag, and this line of code:
<?php wp_footer(); ?>
just before the </body>
tag.
The documentation of Raising Manager provides you several shortcodes. To use these shortcodes in the PHP files of your website, insert a code like this:
<?php echo do_shortcode('[your-shortcode]'); ?>
You can display a different navigation menu for the volunteers. Create your menu through the Menus page of the Appearance menu in WordPress (Appearance => Menus). For each item of your menu, select what you want for the Visibility field.
For more flexibility, you can instead use Menu Item Visibility Control. Create your menu through the Menus page of the Appearance menu in WordPress (Appearance => Menus). For each item of your menu, enter raising_session() as the value for the Visibility field if you want that this item appears only if the user is logged in as a volunteer. Or enter !raising_session() as the value if you want that this item appears only if the user is not logged in as a volunteer.
Without Menu Item Visibility Control, you can also do it like this:
Through the Menus page of the Appearance menu in WordPress (Appearance => Menus), create a menu for the volunteers and a menu for the other users.
In your WordPress theme (most often in the header.php file), you should find one or several lines containing a call to the wp_nav_menu function, like this:
wp_nav_menu(array( … ));
Immediately after array(
, add this code:
'menu' => (((function_exists('raising_session')) && (raising_session())) ? M : N),
Replace M with the ID of the menu for the volunteers, and N with the ID of the menu for the other users. The ID of a menu is the number located at the end of the URL of the page allowing to edit it.
You should get a code like this:
wp_nav_menu(array('menu' => (((function_exists('raising_session')) && (raising_session())) ? M : N)… ));
Raising Manager has several functions for generating passwords and evaluating their strength. These functions are defined in the libraries/passwords-functions.php file of the plugin. You can replace them with your own functions by creating a plugin containing all of the following functions:
<?php function kleor_generate_password($length = 0) {
$length = (int) $length; if ($length <= 0) { $length = 12; }
$characters = 'bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ01234567890123456789()[]{}-+=*.!?,:@#$%&';
$minimum_strength = min(64, $length*(3 + log($length, 2)) - ($length == 1 ? 2 : 3));
$n = 0; $best_password = ''; $best_strength = 0;
while (($n < 8) && ($best_strength < $minimum_strength)) {
$password = ''; for ($i = 0; $i < $length; $i++) { $password .= substr($characters, mt_rand(0, 79), 1); }
if ((function_exists('strip_shortcodes')) && ($password != strip_shortcodes($password))) { $password = str_replace('[', '(', $password); }
$n += 1; $strength = kleor_password_strength($password);
if ($strength > $best_strength) { $best_strength = $strength; $best_password = $password; } }
return $best_password; }
function kleor_generate_password_js() { ?>
<script>
function kleor_generate_password(length) {
var length = parseInt(length); if (length <= 0) { length = 12; }
var characters = 'bcdfghjklmnpqrstvwxzBCDFGHJKLMNPQRSTVWXZ01234567890123456789()[]{}-+=*.!?,:@#$%&';
if (length == 1) { var minimum_strength = 1; }
else { var minimum_strength = Math.min(64, length*(3 + (Math.log(length))/Math.LN2) - 3); }
var n = 0; var best_password = ''; var best_strength = 0;
while ((n < 8) && (best_strength < minimum_strength)) {
var password = ''; for (i = 0; i < length; i++) { password += characters.substr(Math.floor(80*Math.random()), 1); }
n += 1; strength = kleor_password_strength(password);
if (strength > best_strength) { best_strength = strength; best_password = password; } }
return best_password; }
</script>
<?php }
function kleor_password_strength($password) {
$password = kleor_strip_accents($password);
$length = strlen($password); $strength = 0;
if ($length > 0) {
if ((strtolower($password) != $password) && (strtoupper($password) != $password)) { $strength += 1; }
foreach (array('/[0-9]/', '/[^a-zA-Z0-9 ]/') as $pattern) {
if (preg_replace($pattern, '', $password) != $password) { $strength += 1; } }
$characters = array(); for ($i = 0; $i < $length; $i++) { $characters[] = substr($password, $i, 1); }
$strength = $length*($strength + log(count(array_unique($characters)), 2)); }
return $strength; }
function kleor_password_strength_js() { ?>
<script>
function kleor_password_strength(password) {
var password = kleor_strip_accents(password);
var length = password.length; var strength = 0;
if (length > 0) {
if ((password.toLowerCase() != password) && (password.toUpperCase() != password)) { strength += 1; }
if (password.replace(/[0-9]/g, '') != password) { strength += 1; }
if (password.replace(/[^a-zA-Z0-9 ]/g, '') != password) { strength += 1; }
var characters = []; for (i = 0; i < length; i++) {
var character = password.substr(i, 1);
if (password.substr(0, i).indexOf(character) == -1) { characters.push(character); } }
strength = length*(strength + (Math.log(characters.length))/Math.LN2); }
return strength; }
</script>
<?php }
Of course, you can change the source code of these functions, but don't change their names.
You can add an autoresponder that is not natively integrated with Raising Manager. To do this, create a plugin with a code like this (simple version):
function add_my_autoresponder($autoresponders) {
$autoresponders['My Autoresponder'] = array('function' => 'subscribe_to_my_autoresponder');
return $autoresponders; }
add_filter('raising_autoresponders', 'add_my_autoresponder');
function subscribe_to_my_autoresponder($list, $contact) {
…
…
}
or like this one (more elaborate version):
function add_my_autoresponder($autoresponders) {
$autoresponders['My Autoresponder'] = array(
'function' => 'subscribe_to_my_autoresponder',
'display_function' => 'display_my_autoresponder',
'update_function' => 'update_my_autoresponder');
return $autoresponders; }
add_filter('raising_autoresponders', 'add_my_autoresponder');
function subscribe_to_my_autoresponder($list, $contact) {
…
…
}
function display_my_autoresponder($options, $back_office_options) { ?>
<table class="form-table"><tbody>
<tr style="vertical-align: top;"><th scope="row" style="width: 20%;"><strong><label for="my_autoresponder_api_key"><?php _e('API key', 'raising-manager'); ?></label></strong></th>
<td><textarea style="padding: 0 0.25em; height: 1.75em; width: 50%;" name="my_autoresponder_api_key" id="my_autoresponder_api_key" rows="1" cols="50"><?php echo (isset($options['my_autoresponder_api_key']) ? $options['my_autoresponder_api_key'] : ''); ?></textarea>
<span class="description" style="vertical-align: 25%;"><a target="<?php echo $back_office_options['documentations_links_target']; ?>" href="https://www.kleor.com/raising-manager/documentation/#my-autoresponder"><?php _e('More informations', 'raising-manager'); ?></a></span></td></tr>
<tr style="vertical-align: top;"><th scope="row" style="width: 20%;"></th>
<td><input type="submit" class="button-secondary" name="submit" value="<?php _e('Update', 'raising-manager'); ?>" /></td></tr>
</tbody></table>
<?php }
function update_my_autoresponder($options) {
if (isset($_POST['my_autoresponder_api_key'])) {
$_POST['my_autoresponder_api_key'] = trim($_POST['my_autoresponder_api_key']);
$options['my_autoresponder_api_key'] = $_POST['my_autoresponder_api_key']; }
return $options; }
The subscribe_to_my_autoresponder function subscribes the user in a list of the autoresponder. The display_my_autoresponder function displays the options of the autoresponder in the Autoresponders integration module of the Options page of Raising Manager. And the update_my_autoresponder function updates these options when submitting the form of this page.
To better understand how to do this, look at the source code of this plugin.
You can replace all Raising Manager files (except raising-manager.php) with your own files. For this, create the raising-manager-custom-files folder in the plugins directory (the one where you installed Raising Manager) of your website.
For example, if you want to replace the includes/data.php file of Raising Manager with a file you have customized, create the includes folder in the raising-manager-custom-files folder, and upload your data.php file to this folder.
You can set yourself the directory where your custom files are stored, by inserting this line:
define('RAISING_MANAGER_CUSTOM_FILES_PATH', ABSPATH.'custom-files/raising-manager/');
just after:
if ( !defined('ABSPATH') )
define('ABSPATH', dirname(__FILE__) . '/');
in your wp-config.php file.
Replace custom-files/raising-manager with what you want. The value of RAISING_MANAGER_CUSTOM_FILES_PATH must end with a /.
Raising Manager is developed in English and contains files that translate it in French. If you wish, you can translate it into another language.
To do this, create your custom files directory by following these guidelines. Create the languages folder inside of it, and upload your translation files to this folder.
You can create your translation files with the languages/raising-manager.pot file of the plugin, and by using the free software Poedit. Your MO and PO translation files must be named like this:
raising-manager-ll_CC.mo
raising-manager-ll_CC.po
ll_CC is the value displayed by this line of code:
echo get_locale();
when it's executed in one of the files of your WordPress website.
Yes. You can insert all the shortcodes available on your website in most fields of Raising Manager admin pages.
Insert into the PHP files of your theme a code like this:
<?php echo do_shortcode('[your-shortcode]'); ?>
Edit the functions.php file (create it if it doesn't exist) of your WordPress theme and add this line of code:
add_filter('comment_text', 'do_shortcode');
You can use shortcodes in most attributes of Raising Manager shortcodes, provided to replace [ by ( and ] by ), like this:
[your-shortcode attribute='(your-other-shortcode)']
Don't forget to include the quotes at the beginning and the end of the shortcode.