September 20th, 2011 — Access Control, Content Dripping, Customization, Examples, Protecting Content, Setup, Shortcodes
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.
September 16th, 2011 — DAP
Admin users will always be redirected to the dap admin dashboard upon login.
Regular users (non-admin) will be redirected either to the ‘product-level logged-in‘ url or the Global logged-in URL (set in dap setup->config->Post-Login URL ).
If the user has access to 1 product, the user will be redirected to the ‘product-level’ logged-in url. This is set in the DAP products page as shown below:

If the user has access to multiple products OR if the product-level logged-in url is not set, the user will be redirected to global logged-in url set in DAP setup- > config as shown below:

September 13th, 2011 — DAP
If thank-you email or double-opt-in email or forgot password email is NOT getting delivered even after you configure it in dap, it likely has something to do with your host settings and does not have anything to do with DAP.
NOTE: WordPress replaces double quotes with backticks (“). Pls make sure to replace all backticks (“) below with double quote otherwise the php code will break.
To test:
Upload the following php code to a file called testmail.php file to the root of your site.
<?php
$to = “yourname@yourdomain.com”; // put in your email address here to send an email to yourself
$subject = “Test mail”;
$message = “Hello! This is a test email message.”;
$from = “you@yourdomain.com”; // SET this to point to a valid sender email address
$headers = “From:” . $from;
mail($to,$subject,$message,$headers);
echo “Mail Sent.”;
?>
NOTE:
Update the “from tag” above to point to a valid email address.
Then run the following script on your browser and see if it goes through.
http://yoursite.com/testmail.php (replace yoursite.com with the name of your site).
September 6th, 2011 — DAP
Integration between DAP and Worldpay is IPN (instant payment notification) based and pretty straightforward.
a) Login to your Worldpay account, go to your Production/Test Installation, set the Payment Response URL to point to the DAP script on your site — http://YOURSITE.COM/dap/dap-worldpay.php (replace YOURSITE.COM with the name of your site)
b) Make sure the ‘Description‘ in Worldpay eXactly matches Product Name in DAP.
That’s it.
September 3rd, 2011 — DAP
1) If you have integrated DAP and CB using INS and receive this error message or email : [DAP] http://yoursite.com: dap-clickbank.php: Check your ClickBank secret key in DAP Config
Pls do this to resolve this error:
- Pls make sure the Secret Key is the same in both Clickbank and in DAP config area. It should be all uppercase and do not use any special characters.
- Pls set the CB INS to version 1.0. Do NOT use version 2.0.
- Make sure the product name in dap and the Product Titles in Clickbank exactly match.
2) If you receive this error message : DAP Clickbank INS Error (Rejected): INS Product Name = ‘your product name’ does not match any DAP Product Name. But REJECTING MISMATCH it because of your Config settings (Product Mismatch)
You can ignore this error if it’s not a dap product. It does not affect the CB affiliate commissions.
If you set the INS URL in CB to point to DAP, then all purchase notifications will get sent to dap.
DAP will only process the ones that are relevant to it and throw away the rest. But before it throws away unrelated purchases for non-dap products, it sends out this email to the admin as FYI that can be ignored.
August 31st, 2011 — DAP
If you put in the DAP merge tags like %%LOGIN_FORM%%, %%USERLINKS%%, %%USERPROFILE%% in a WordPress page but if it does not render correctly, pls do this:
1) Make sure DAP Live Links plugin is active
(check WP admin => Plugins).
2) If it is active, then create a new WP Page with ONLY this tag – %%LOGIN_FORM%%
3) Now open the WP page and see if you still see it as %%LOGIN_FORM%% or if it renders correctly.
4) If you still see it as %%LOGIN_FORM%%, then go back to WP Admin -> Plugins and temporarily de-activate all Plugins EXCEPT DAP Live Link to check if there is a plugin conflict.
5) Go back and open the WP page you created in step 3 above and see if it renders correctly
6) If it still does not work, send us your FTP info, dap and WordPress admin panel url, id/password info for troubleshooting. If it works, then re-activate Plugins one-at-a-time to see which one caused conflict.
August 8th, 2011 — Access Control, Admin, DAP, Examples, Payment Integration, Paypal, Subscription, Troubleshooting, Users
User ID 111 has been created with email id ABC123@somewhere.com
Same user buys a different product using a completely new (Paypal) email id. and DAP creates User ID 999 with PayPal email XYZ789@anothersite.com
User now has 2 accounts and wants only ABC123@somewhere.com (user ID 111) to be active.
So here’s what you should do:
- Place XYZ789@anothersite.com in the PayPal email field of User ID 111 and save.
- Give User ID 111 access to all products that User ID 999 currently has active, with matching start and end dates.
- Delete User ID 999 fully from the system.
If User ID 111 purchases additional products through Paypal, and her primary Paypal email id is still XYZ789@anothersite.com, then that Paypal email id will be recognized by DAP, and all purchased products will be activated under User ID 111 and no additional User IDs will be created.
However, if User ID 111 has changed their primary Paypal email id to be something else like XYZ123@yetanother.com, then the next time they make a purchase, DAP will not know it’s the same person, and will end up creating a completely new user id for the buyer. Which means, you will have to do the merge again, and replace the old Paypal email id in DAP with the new Paypal email id of the buyer.
August 1st, 2011 — 3rd Party Integration, Access Control, Admin, Database, Performance, Plugins, Setup, Strategy, Troubleshooting, Web Hosting
Using a “cache” plugin for speeding up your site is like putting band-aid on a gaping wound. It’s only a temporary fix, and not a real long-term solution.
Plus a cache plugin has its place, but it’s certainly not for a membership site, where DAP will need to make calls to the database to figure out who’s viewing the content, are they a member, what products have they purchased, what content do they have access to, etc.
If you want to speed up your web site, you must address the core issue, which is — your web site is getting more traffic than your web server (web hosting account) can handle.
So here are a couple of ways in which you can speed up your web site:
- The easiest thing you can do is to revisit all of your plugins that you have enabled. Remember that every single plugin adds some overhead to (read “slows down”) your web site or blog. So use only as few plugins as you absolutely must. With so many cool plugins available freely for WordPress, it is very easy to get carried away, and install tens of plugins, most of them adding very little value, but sometimes causing the most overhead in terms of server resources. So keep only a bare minimum of other plugins (some social plugins are a real pain – making calls to third-party web sites to get their information from).
- If you are hosting on a shared (a.k.a “cheap”) web host paying just a few dollars a month for hosting, then your web site is basically competing for server resources (like memory and bandwidth and database access) with possibly tens (or even hundreds) of other web sites on that same server (many may not belong to you, but to others with whom you are sharing the server – and hence the name “shared hosting”).Search for the keywords “digg effect” or “slashdot effect” on Google, and you’ll see how many WordPress sites crash when a link to the site appears among the top results in popular social sites like Digg.com, Reddit.com or Slashdot.com.
If your traffic levels have outgrown your server, then the best thing you can do is to upgrade to a bigger server, or get a Virtual Private Server, or even get a dedicated host, depending on your budget. See our recommended web hosts list.
July 22nd, 2011 — Access Control, Admin, Config, Customization, DAP, Examples, FAQ, Features, Merge Tags, Protecting Content, Protection FAQ, Setup
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.
July 21st, 2011 — Admin, Customization, Internationalization
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