Entries Tagged 'Customization' ↓

Customizing vBulletin Login For Single-Signon

Here’s what you need to do to disable the standard vB login form at the top-right corner of your forum pages, and customize it so that you force your members to log in via the DAP login form, so that they’re logged in to your membership site as well as DAP.

  1. Log in to VB Admin control panel at http://yoursite.com/forums/admincp/
  2. Go to Styles & Templates > Style Manager > Default (or whatever style you’re currently using)
  3. From the big list on the left, select the “header” template. Then on the right, under the “Controls” section, click on Edit
  4. On the resulting page, copy the full code from this text file and paste into the main “Template” body, and click on “Save”
  5. Next, download the file forums/register.php from your server, to your desktop and save the original copy somewhere safe.
  6. Replace the contents of that file with the contents of this text file.

That’s it!

Creating Member-specific Content

If you have a coaching program, or have clients for whom you’re doing custom work (like if you were a CPA or a web designer), and want to publish content that is available to and downloadable only by that client, then there are THREE ways in which you can do Member-Specific Content in DAP.

1) BEST SOLUTION: Using a combination of a special page for each member PLUS DAP’s “For Your Eyes Only” Shortcode

2) Creating Separate Products for each Member

3) Using DAP’s “For Your Eyes Only” Shortcode

Let’s take a look at each one in detail.

1) BEST SOLUTION: Special page for each member PLUS DAP’s “For Your Eyes Only” Shortcode

This is partly manual, partly automated, but is the absolute best solution for multiple reasons, as explained below.

1) For each new member, you would create a separate page. So, for Joe Customer, you would create a new page in WP – http://YourSite.com/joe-customer/

This page would be created after someone has become a member, of course. But creating a WP page for every member will probably take you about what, 30 seconds? So it’s not going to be a big deal (unless you wish to make it one ;-)

2) Then, assuming Joe Customer’s “userid” in DAP is 144 (you can find this out on the Users > Manage page). So within the above new page, you would add the following shortcode…

[DAP userId="144"]protected content[/DAP]

(See DAP’s “Member-Specific Content” Shortcodes )

3) You can start adding any amount of private content between the shortcode start and end tags (where you see protected content above).

4) You can use a simple, free plugin like Exclude Pages to make sure the customer’s page http://YourSite.com/joe-customer/ does not show up in any of your menu’s. Even if it did, it’s not like anyone else can see the contents of the page – only Joe Customer – after he’s logged in to DAP – can see the contents of the page. So it’s secure from everyone else.

2) Separate Products for each Member

Here, you would create separate products, one per member – and only give that member access to that product. The advantage here, is that you can protect the entire page (not just the content section) and make it available just to that one client, so you can be a lot more creative with this page, use special templates, add sidebar widgets that show content just for that client, use the commenting system to communicate back and forth with the client.

So if you had a client named John Customer, then you would create a DAP Product by name “John Customer”, then take John’s email id and give John access to his product.

And within this DAP Product, you would’ve protected files, pages and posts that only John should get access to. So since only John has access to the product, only he can get access to the content protected as part of this product.

Obviously, it takes a few minutes of additional setup per customer to create a DAP Product specifically for him, but then the few extra minutes of creating a DAP Product would be nothing compared to the few hours (or tens of hours) that you’re actually going to be taking to create the actual custom content for John. So it’s a very small overhead compared to the whole process, where you are actually creating custom content for each member.

3) No special pages, just DAP’s “Member-Specific Content” Shortcode

If you wish to automated this a bit more than Option #2, then one way is to implement this is using DAP’s “Member-Specific Content” Shortcodes, which look like this:

Using the “userId” parameter in the DAP shortcode, you can now protect a piece of content so that only John Customer (who has the user id “144″ in your membership site) user can see it.

[DAP userId="144"]protected content[/DAP]

So on a single page, you may publish a number of these shortcodes, with content meant only for specific members protected within those shortcodes.

And doesn’t matter which one of your members visits the above page, they will all only see content intended only for them, and will be unable to see content intended for others.

So those are the three ways in which you can create Member-Specific Content.

The “Smart Login” Process

DAP has a “Smart Login” feature, where the login process will work slightly differently under different conditions, all designed to make the user-experience for your member more smooth and consistent with general log in standards around the web.

So let’s see the various possible login locations in DAP.

But first, it is important to note that DAP has two main types of logins.

Primary Login

This is where it is considered a “generic” login by your member. For eg., a member came to your web site, and then just generally wants to log in to the member’s area – so they have no “context” – it’s NOT as if they were trying to view a specific page or post, got challenged with a login form, and then logged-in from there. That makes this a “Primary Login“.

Examples of this are…

a) You have a dedicated login page, like http://YourSite.com/login/ – which is what you’ve entered in to “Setup > Config > Login URL“. The body of this page has the DAP merge tag for the login form, which is %%LOGIN_FORM%%

b) Login/Logout Widget on the home page of your web site. This is also considered a primary login, because they just came back to your site, and just wish to log in to their member’s area to see what’s new.

Secondary Login

This is a log in action that HAS “context”. Say, a member landed deep into your site (not the home page, not the dedicated login page) and tried to log in from, say, the widget on the side-bar, or were challenged by the “In Page Error Message” that says something like “Sorry, you must log in before you can view this content” and are presented with a login form right on that very same page. They were trying to read something before they were asked to log in first – which means, they must be returned to the same page they were trying to view BEFORE they were asked to login. So that makes this a “Secondary Login“.

Examples of this are…

a) Login/Logout Widget on any page EXCEPT the home page.

b) Any custom “Error Page”, where you have inserted the DAP merge tag for the login form, %%LOGIN_FORM%%.

c) DAP’s “In-Page Error Message” which says “Sorry, this is private content – you must log in first before you can view this”.

So now that you know what’s a Primary Login and what is a Secondary Login,

Redirection Rules

Based on whether it’s a Primary Login or a Secondary Login, your member will be redirected to a different location.

1) If it is a Primary Login action, then…

a) They’re taken to the “Post-Login URL” if set at a Product-level AND they have access to just one Product.
b) They’re taken to the GLOBAL “Post Login URL” (under Setup > Config) if you have NOT set anything at a Product-level, OR if they have access to more than one Product.

This scenario is the only one where the Post-Login URL is ever used (whether it’s the Product-level or Global-level).

1) If it is a Secondary Login action, then…

They’re always redirected back to the same page they were on (or were trying to access) before they were challenged to log in first to view the content.

Bottom-line:

Primary Login is predictable, and you (the DAP Admin) control where they go right after they login.

Secondary Login depends on “context”, and they’re taken back to whatever page they were before they logged in.

Troubleshooting Weird-Looking Text

Problem

I just upgraded to DAP 4.x. The login page when clicked after successful login shows the message
[MSG_ALREADY_LOGGEDIN_1 MSG_ALREADY_LOGGEDIN_2]

Solution

Did you previously customize the dap/inc/language/english.php and save it as dap/inc/language/custom.php? (you have done this for internationalization, or for customizing DAP’s messages).

A) If you answered “NO”, then simply delete the file dap/inc/language/custom.php from your server.

B) If you answered “YES”, then then there are new messages in dap/inc/language/english.php that you need to copy over to dap/inc/language/custom.php

 

Secure RSS Feeds

Starting DAP v4.2, each of your members can now get their own unique RSS feed link that they can use with a feed reader (like Google Reader, FeedBlitz, iTunes, etc) to get a custom RSS feed with content that they’re eligible to view.

To give each of your members their own unique RSS Feed URL, just insert the following line of code into the top of the “Member Links” or “My Content” type page, or wherever you want your users to see their personalized RSS feed link…

If your blog is in the root…

http://YourSite.com/feed/?key=%%ACTIVATION_KEY%%

If your blog is in a sub-folder (say “/blog”)…

http://YourSite.com/blog/feed/?key=%%ACTIVATION_KEY%%

 

The text %%ACTIVATION_KEY%% in the above URL will be replaced with their own custom key, like…

http://YourSite.comcom/feed/?key=123456789

They can then copy that link, enter that into any feed reader, and it will show content specific to their account.

Custom Feed Link Security

Another useful feature we’ve added, is that the custom feed link also does IP count validation. So if they share  the feed link with others, then after “X” unique IP login attempts (where “X” is configurable by you, the DAP Admin, in Setup > Config), their account will automatically get locked out.

Strange Characters In Emails

If you or your members are noticing strange characters in emails – especially where there should normally be a single or double quote, then these are due to what are known as “Smart Quotes”.

These special characters always show up when you copy text from a WordPress blog (some themes use these characters) or a Microsoft Word document.

Single quote:

'(correct)

`(incorrect)

Double quote:

" (correct)

`` (incorrect)

The single quote that works correctly is located next to the “Enter” key.

The incorrect one is located next to the “1″ number key.

So copy your email text to a text editor, like notepad. Then change all single quotes to be and all double-quotes to be in your emails. Then put them back into DAP, and then test.

The “strange characters” issue should then be resolved.

NOTE: In a future version, we will implement an enhancement in DAP so that DAP can handle this automatically, but for now, the above solution is your only option.

DAP Login Xpress

What Is “Login Xpress”?

“Login Xpress” is a DAP feature that enables your members to be logged right into your membership site immediately upon completion of their purchase.

This is roughly how it works:

  • Visitor arrives at your web site
  • On your sales page, they click on any “Buy” button to purchase a Product (or Membership Level)
  • They’re taken to the checkout page (depending on Payment processor being used) and they enter their payment information and hit “Submit”
  • When they hit “Submit” to complete their payment, their payment is processed right away, and the buyer is immediately transferred back to your web site, in real time, and automatically logged in to your membership site, and they are taken to the “Welcome” page or “Members” page (you may choose what this page is going to be at a per-Product level)

Payment Processors That Work With Login Xpress

DAP supports this feature with the following payment processors:

  • Paypal Standard (DAP-generated buttons only – will not work with Paypal-hosted buy buttons that you generate from within your Paypal account)
  • 1Shoppingcart / 1SiteAutomation.com
  • Authorize.net

If you use any of the payment options above, then you can set up your sales funnel in such a way that buyers are logged in right away immediately after purchase.

Payment Processors That DO NOT Work With Login Xpress (Yet)

  • Paypal Website Payments Pro
  • ClickBank
  • e-Junkie
  • WorldPay

DAP integrates with the above processors via some kind of “back-end payment notification” – similar to Paypal’s “IPN” (Instant Payment Notification). Which means the notification between the payment processor and DAP on your site only happens on the “back-end”. Which is why DAP can only deliver the login details to the buyer via an email, and cannot log them in right away (like it can do with “Login Xpress”), because the buyer’s information is available to DAP only when the payment processor sends out the IPN notification behind-the-scenes, so to speak.

So if you’re using the above processors to accept online payments, then what you need to do, is to redirect your buyers to a static “Thank You” page that has a message similar to the one below…

“Thank you for your purchase. In a few minutes, please check your email address used during purchase for your log in details to log in to the members’ area and access the product you just purchased.”

And behind the scenes, DAP would’ve already received the payment notification from the payment processor, and it would’ve created an account for your buyer, given them access to the purchased product, and sent them the “Thank-you Email” for the product(s).

DAP Plugin Framework

How To Setup Notifications/Triggers From DAP to 3rd Party APIs

We have now created a plugin framework that will allow DAP to trigger calls to 3rd party services when a user is added to a product (subscription/registration event) or when a user loses access to product (unsubscribe/unregister event).

In fact, we used the same framework to develop DAP -> Mailchimp integration in DAP 4.1.

Here’s the steps :

1) If you want DAP to trigger calls to the APIs/methods you wrote upon an addUserToProduct event or removeUserFromProduct event in DAP, then in the DAP products page – > notify plugin field, use the following format to integrate the APIs/class files.  You can integrate multiple systems with DAP using this framework.

Say you want to integrate classname1 (that has the necessary APIs to register/unregister users to 3rd party service like Mailchimp ) and classname 2 (that has the necessary  APIs to register/unregister users to another 3rd party service like GetResponse), then use this format in the notify plugins field above.

classname1:VALUE 1 you want to pass to the api: VALUE 2 you want to pass to the api: VALUE 3 you want to pass to the api

If you want DAP to call multiple APIs/ Classes, then just create a comma seperated list of classes that DAP should notify.
classname1:VALUE 1 you want to pass to the api: VALUE 2 you want to pass to the api: VALUE 3 you want to pass to the api,
classname2:VALUE 1 you want to pass to the api: VALUE 2 you want to pass to the api,
classname3:VALUE 1 you want to pass to the api

Whatever values (VALUE1, VALUE2.. ) you put next to the class name (all values should be “:” separated), DAP will forward those params/values to your APIs when a user is added to product or user is removed from product.

To integrate say classname1 which consists of the methods/apis to talk to your 3rd party services, create a folder called classname1 under /dap/plugins folder. Then under the classname1 folder, create a php script called classname1.class.php  (just the way you notice a folder called mailchimp and under mailchimp a class file called mailchimp.class.php).

So you will have something like this:

/dap/plugins/classname1/classname1.class.php

Here’s what you need to have in classname1.class.php ( skleton class implementation ) :

< ?php

class classname1 {

function classname1() // constructor
{ }

//======== USER REGISTRATION===========

// this function is called by dap when a user is added to a product

function register($userId, $productId, $params) {

logToFile(“classname1.class.php: register(): “, LOG_INFO_DAP);
$dapuser = Dap_User::loadUserById($userId);
$email = trim($dapuser->getEmail());
$username = trim($dapuser->getUser_name());
$firstname = trim($dapuser->getFirst_name());
$lastname = trim($dapuser->getLast_name());

$data = explode(“:”,$params);

}

function unregister($userId, $productId, $params)
{
logToFile(“classname1.class.php: register(): “, LOG_INFO_DAP);

$dapuser = Dap_User::loadUserById($userId);
$email = trim($dapuser->getEmail());

$data = explode(“:”,$params);

}

}
?>

NOTE:

You MUST have same name methods (called register() and unregister() ) and the exact method signature as you see above.

You can  call other methods/functions from register/unregister and/or

You can call 3rd party APIs from register/unregister methods and/or

You can include other class files.

Whatever values you pass (VALUE1, VALUE2 etc) via notify plugin, you can access those values in these methods. The values are available in the $params array.

That’s it.

You can add a test user to a product in DAP (via dap admin -> add users) and see if things work as expected.

Internationalization & Custom Messages

The article below applies to both of the following groups…

A) Customizing DAP’s Default Messages

Those who wish to replace DAP’s default error and success messages (like … “Sorry, No User found with the email address…” when someone is trying to use the “Forgot Password” feature, or the message “Sorry, either you have entered an invalid username/password, or you may not have activated your account yet.” which is shown when someone uses the wrong email/password when logging in to your membership site – with English text of their own choice, and

B) Internationalization

Those who wish to replace those messages with text in a completely different non-English, international language (like Spanish, Danish, French, etc).

Non-English Content

DAP is “international-friendly”.

Starting v4.1, you can now customize the “Member-Facing” pages in DAP – like “My Content”, “My Profile” and “My Affiliate Info” pages – in any non-English language of your choice. We tested with many languages – like Spanish, Dutch, French, and even Chinese! Others will/should work too – as long the character set is UTF-8 based.

Now please note that WordPress is already international-friendly, which means you can already create all of your WordPress page and post content in any WP-supported international language.

So we’re excited to be able to help create membership sites in multiple languages.

Non-English Emails

And what’s really cool, is that you can now also send Autoresponder & Broadcast emails in your language.

This is a very powerful feature for those who are often restricted by 3rd-party email services in sending out non-english emails.

In fact, the last time we checked, even the big-boys like Aweber don’t let you do that!

Customizing Language Files

1) Language File Setup for PHP

Open the file…

/dap/inc/language/english.php

and save the file as…

/dap/inc/language/custom.php

in the same folder.

Then you can change the english text (last section that is not in caps – like “Sorry, no data found” in the example below) in your language, and upload it back to the same folder ( /dap/inc/content/language )

define(“MSG_SORRY_NO_DATA_FOUND”,”Sorry, no data found.“);

becomes…

define(“MSG_SORRY_NO_DATA_FOUND”,”Désolé, aucune donnée trouvée.“);

(That’s the French translation, according to Google – blame them if it’s not right :-)

2) Language File Setup for JavaScript

DAP also allows you to customize the JavaScript alerts and messages that pop-up for client-side validations of form fields.

Open the file…

/dap/inc/language/jsenglish.js

and save the file as…

/dap/inc/language/jscustom.js

You may then change the text inside this JavaScript file and upload it back to same folder.

That’s it!

 

Contents of english.php

//———- Added 03/22/2011 ———//
define(“MSG_ALREADY_LOGGEDIN_1″,”You are already logged in.”);
define(“MSG_ALREADY_LOGGEDIN_2″,”Click here to continue…”);
define(“MSG_PLS_LOGIN”,”Sorry, you must log in before you can view this content.”);
define(“MSG_CLICK_HERE_TO_LOGIN”,”Click here to log in”);
define(“MSG_SORRY_EMAIL_NOT_FOUND”,”Sorry, No User found with the email address “);
define(“MSG_PASSWORD_SENT”,”Please check your email. Your Password has been sent to “);

//———- GENERAL TEXT ———//
define (“ACTIVATION_EMAIL_SUBJECT”, “%%FIRST_NAME%%, Welcome to %%SITE_NAME%% (Activation)”);
define (“AFF_PAYMENT_EMAIL_SUBJECT”, “%%FIRST_NAME%%, You’ve Got An Affiliate Payment”);
define (“FORGOT_PASSWORD_EMAIL_SUBJECT”, “Your Long Lost Password!”);
define (“LOCKED_EMAIL_SUBJECT”, “Your account has been locked”);
define (“UNLOCKED_EMAIL_SUBJECT”, “Your account has been Unlocked”);
define (“INVALID_PASSWORD_MSG”,”Sorry, either you have entered an invalid username/password, or you may not have activated your account yet.”);
define(“SUCCESS_ACTIVATION”,”SUCCESS! Your account has been successfully activated! Use the email address and password sent in the activation email to log in below…”);

define(“MSG_SORRY_NO_DATA_FOUND”,”Sorry, no data found.”);
define(“COLNAME_AFFID_TEXT”,”Aff Id”);
define(“COLNAME_NAME_TEXT”,”Name”);
define(“COLNAME_FIRSTNAME_TEXT”,”First Name”);
define(“COLNAME_LASTNAME_TEXT”,”Last Name”);
define(“COLNAME_EMAIL_TEXT”,”Email”);
define(“COLNAME_AMTEARNED_TEXT”,”Amount Earned”);
define(“COLNAME_DATETIME_TEXT”,”Date/Time”);
define(“COLNAME_AMTPAID_TEXT”,”Amount Paid”);
define(“COLNAME_HTTPREFERER_TEXT”,”HTTP Referer”);
define(“COLNAME_DESTINATION_TEXT”,”Destination”);

//———- USER PROFILE TEXT ———//
define(“USER_PROFILE_HEADING_TEXT”,”Profile Information”);
define(“USER_PROFILE_FIRST_NAME_LABEL”,”First Name”);
define(“USER_PROFILE_LAST_NAME_LABEL”,”Last Name”);
define(“USER_PROFILE_EMAIL_LABEL”,”Email”);
define(“USER_PROFILE_USER_NAME_LABEL”,”Username”);
define(“USER_PROFILE_NEW_PASSWORD_LABEL”,”Password”);
define(“USER_PROFILE_REPEAT_PASSWORD_LABEL”,”Repeat Password”);
define(“USER_PROFILE_PAYPAL_EMAIL_LABEL”,”Paypal Email”);
define(“USER_PROFILE_PAYPAL_EMAIL_EXTRA_LABEL”,”For Affiliates Only”);
define(“USER_PROFILE_COMPANY_LABEL”,”Company”);
define(“USER_PROFILE_TITLE_LABEL”,”Title”);
define(“USER_PROFILE_ADDRESS1_LABEL”,”Address 1″);
define(“USER_PROFILE_ADDRESS2_LABEL”,”Address 2″);
define(“USER_PROFILE_CITY_LABEL”,”City”);
define(“USER_PROFILE_STATE_LABEL”,”State”);
define(“USER_PROFILE_ZIP_LABEL”,”Zip”);
define(“USER_PROFILE_COUNTRY_LABEL”,”Country”);
define(“USER_PROFILE_PHONE_LABEL”,”Phone”);
define(“USER_PROFILE_FAX_LABEL”,”Fax”);
define(“USER_PROFILE_UNSUBSCRIBE_LABEL”,”You are currently receiving product and <br/>account related emails. Uncheck to stop<br/>receiving all emails (not recommended)”);
define(“USER_PROFILE_SUCCESS_MESSAGE”,”SUCCESS! User has been successfully updated.”);

//———- AFFILIATE PAGE LABELS ———//
define(“AFFILIATE_INFO_TOTALEARNINGS_SUBHEADING”,”Total Earnings”);
define(“AFFILIATE_INFO_AFFLINK_SUBHEADING”,”Affiliate Link”);
define(“AFFILIATE_INFO_YOURAFFLINKHOME_LABEL”,”Your Affiliate Link – redirects to home page:”);
define(“AFFILIATE_INFO_AFFLINKSPECIFIC_LABEL”,”Affiliate Link To Specific Page:”);
define(“AFFILIATE_INFO_AFFLINKSPECIFIC_EXTRA_TEXT”,”To link to a specific page, just add the text &quot;&amp;p=&lt;insert_url_here&gt;&quot; to the end of your affiliate link, like this: (no &quot;http://&quot; in the 2nd link at the end – should start with &quot;www&quot;)”);
define(“AFFILIATE_INFO_TEST_TEXT”,”test”);
define(“AFFILIATE_INFO_PAYMENT_DETAILS_SUBHEADING”,”Payment Details”);
define(“AFFILIATE_INFO_EARNINGS_DETAILS_SUBHEADING”,”Earnings Details”);
define(“AFFILIATE_INFO_TRAFFIC_STATISTICS_SUBHEADING”,”Traffic Statistics”);

//———- USER LINKS PAGE TEXT ———//
define(“USER_LINKS_YOUCURRENTLYHAVEACCESSTO_TEXT”,”You currently have access to “);
define(“USER_LINKS_PRODUCTS_TEXT”,” product(s).”);
define(“USER_LINKS_ACCESS_START_DATE_TEXT”,”Access Start Date”);
define(“USER_LINKS_ACCESS_END_DATE_TEXT”,”Access End Date”);
define(“USER_LINKS_DESCRIPTION_TEXT”,”Description”);
define(“USER_LINKS_LINKS_TEXT”,”Links”);
define(“USER_LINKS_NOLINKSFOUND_TEXT”,”No links found.”);

 

Contents Of jsenglish.php

//New entry MSG_EMAIL_INVALID added on 07/14/2011
var MSG_EMAIL_INVALID = “Sorry, email id must of a valid format, may not be blank or contain any special characters”;

var MSG_MISSING_INFO = “Please enter missing information…”;

var MSG_ENTER_EMAIL = “Please enter your email address before we can email you the password”;

var MSG_ENTER_PASSWORD = “Sorry, the password field may not be empty”;

var MSG_PASSWORDS_MISMATCH = “The two Passwords don’t match. Please try again…”;

var MSG_PASSWORD_INVALID = “Sorry, password contains invalid characters. Please choose from numbers and alphabets only.”;

var MSG_UPDATING_PROFILE = “Please wait… Updating User Profile …”;

var MSG_OPTOUT_WARNING = “WARNING: If you uncheck this box, you may not receive emails relevant to the product you have purchased. Are you sure you still want to Unsubscribe?”;

var MSG_NO_SPECIAL = “Sorry, no special characters allowed”;

Other links….

To customize the DAP Stand-alone Login form, click here.

To customize the DAP Login/Logout widget, click here.

To customize the DAP default Error Message with the ‘Lock’ image, click here.

Protect Entire Blog

If you, for some reason, need to protect your ENTIRE blog from “non-logged in users” – meaning, any part of your blog (menus, sidebars, widgets, etc), including the un-protected pages, should be seen only by someone who is already logged in – be it a free user or a paid user, then here’s how you do it…

  1. Go into your WordPress Admin, click on Appearance > Editor
  2. Make sure your current theme is selected in the drop-down towards the right/top corner.
  3. Click on “Header” (header.php) of your theme.
  4. Enter the following text right towards the very top of that file.

<?php
include_once “./dap/dap-config.php”;

if( !Dap_Session::isLoggedIn() ) {
header(“Location: /dap/login.php”);
exit;
}
?>

The only thing you need to make sure is that you have the path to the dap-config.php correct.

If your blog is in the root, then use the code above as is.

If your blog is in a sub-folder, then replace line in red above, with the line in red below…

include_once “../dap/dap-config.php”;

That’s it!


WARNING

Please remember that if you do this, then you must use the default DAP login page /dap/login.php , and you won’t be able to put the login form within WordPress.

The reason for this, is that the protection code is being applied at the theme level, and the protection will also apply to all WordPress pages and posts – and if you put the DAP login form inside a WP page, then that page will also get protected from everyone, and no one will even be able to get to the login form in order to log in. That makes your site impossible to log in to, which of course makes no sense.