latest stable versions: v150827 (changelog)

Old Forums (READ-ONLY): The community now lives at WP Sharks™. If you have an s2Member® Pro question, please use our new Support System.

Randy King


My Latest Replies (From Various Topics)

Viewing 25 replies - 26 through 50 (of 59 total)
Author Replies
Author Replies
Posted: Saturday Jan 26th, 2013 at 7:44 pm #39716
Randy King
Username: RandyKing

Yes – AS LONG AS when the thank-you page is launched, the system knows what level that user is assigned to. I have not tried this scenario myself, but I have used the re-direct code based on levels. So I know that the methodology works, I’m just not sure if the credentials, specifically the package level, is set for the user that just logged in.

Perhaps Jason or one of the other developers will jump in and let us know – I’m not in a position to test this anywhere at the moment to let you know for certain.

Another approach that I know would work for sure is to allow the user to complete their registration with a single thank-you page. Then, when the user logs in for the first time, you re-direct them to your tracking page ONCE. I don’t have specific tested code for that handy, but what you would do is query the login counter which s2Member gives you access to, and IF that counter = 1, THEN do the re-direct to the specific level-counter page.

Posted: Friday Jan 25th, 2013 at 5:40 pm #39554
Randy King
Username: RandyKing

Frank,

Got it. So inside of the short-code conditionals I showed in the first response, you could insert the code needed to do your tracking. If you are telling me that you need to do a “thank you” on another website all together, then modify your short-code conditionals as follows:

[s2If current_user_is(s2member_level4)]
	<script type="text/javascript">
		window.location = 'http://www.YourWebsite.com/level4/';
	</script>
[/s2If]

[s2If current_user_is(s2member_level3)]
	<script type="text/javascript">
		window.location = 'http://www.YourWebsite.com/level3/';
	</script>
[/s2If]

[s2If current_user_is(s2member_level2)]
	<script type="text/javascript">
		window.location = 'http://www.YourWebsite.com/level2/';
	</script>
[/s2If]

[s2If current_user_is(s2member_level1)]
	<script type="text/javascript">
		window.location = 'http://www.YourWebsite.com/level1/';
	</script>
[/s2If]

[s2If current_user_is(s2member_level0)]
	<script type="text/javascript">
		window.location = 'http://www.YourWebsite.com/level0/';
	</script>
[/s2If]
Posted: Friday Jan 25th, 2013 at 3:13 pm #39540
Randy King
Username: RandyKing

Robert,

I am in the process of building such a site and my research has led me to implement BuddyPress along with s2Member. BuddyPress tightly integrates with the WordPress platform and gives you gobs of possibilities for community interaction, and s2Member governs who gets in the door and what rooms they can play in.

Check out BuddyPress here: http://buddypress.org/

Posted: Friday Jan 25th, 2013 at 3:09 pm #39539
Randy King
Username: RandyKing

Robert,

You can use the API Notifications from s2Member — an HTTP Post — to notify Affinity Live of events like New Subscriptions, New Members, Payments, Modifications, Cancellations, End Of Term (subscriptions), Refunds, etc.

Check out this article on building an API notification handler: http://www.s2member.com/kb/building-an-api-notification-handler/

Posted: Friday Jan 25th, 2013 at 2:59 pm #39537
Randy King
Username: RandyKing

Hey, Frank –

I am answering this off-the-cuff, so you may have to test it to be sure. If the person registering is logged in at the time the thank-you page is posted, then here’s what you can do. Put the following shortcodes on the thank-you page…

[s2If current_user_is(s2member_level4)]
    Thank you for registering for our diamond-studded platinum package.
[/s2If]

[s2If current_user_is(s2member_level3)]
    Thank you for becoming a master jedi warrior.
[/s2If]

[s2If current_user_is(s2member_level2)]
    Thank you for becoming a silver member.
[/s2If]

[s2If current_user_is(s2member_level1)]
    Thank you for registering as a bronze member.
[/s2If]

[s2If current_user_is(s2member_level0)]
    Thank you for registering with us.
[/s2If]
Posted: Thursday Jan 24th, 2013 at 1:13 pm #39431
Randy King
Username: RandyKing

Wow, Jason – thank you, that’s really great. And I enjoy pitching in when I have knowledge to share that’s pertinent.

Posted: Thursday Jan 24th, 2013 at 1:10 pm #39430
Randy King
Username: RandyKing

Thanks, Jason. By the way, during my recent implementation of PayPal on a site, the darn thing changed right under my nose – and PayPal even mentioned that they were in the process of changing it. In general, everything talked about inside of s2Member is now underneath “Selling Tools” in the menu.

Posted: Tuesday Jan 22nd, 2013 at 1:35 pm #38983
Randy King
Username: RandyKing

Todd, you’re very welcome. Infusionsoft is a powerful, fully-featured automation system and it can be very very complex. They are making great strides toward simplification, but it will surely help if you have a decent understanding of basic coding and database practices. It’s not for the faint of heart nor the thin of wallet. :)

Posted: Tuesday Jan 22nd, 2013 at 9:41 am #38953
Randy King
Username: RandyKing

Wow, I could have sworn this was not there a couple days ago, but I found the answer when I went to actually create a button. There is a non-recurring payment option for the button code, AND it accepts the setting of custom capabilities.

In the words of Emily Litella: Never Mind!

Posted: Tuesday Jan 22nd, 2013 at 9:01 am #38950
Randy King
Username: RandyKing

Hey, Michael –

I have done this and it works quite well. This integration is one-way; it creates (does NOT update) a user that is already in InfusionSoft into your WordPress site. Here is the code that I used with a very detailed explanation below…

<?php
	$op["op"] = "create_user";                                   /* Required.  This is the only op code available in S2 currently. */
	$op["api_key"] = "your_infusionsoft_api_key_here";           /* Required.  This is the S2Member Remote Operations API Key */

	$op["data"] = array (/**/
		"user_login" => $_REQUEST["FirstName"].$_REQUEST["LastName"],  /* Required. A unique Username. Lowercase alphanumerics/underscores. */
		"user_email" => $_REQUEST["Email"],                  /* Required. A valid/unique Email Address for the new User. */
                                                                     /* Optional password omitted so that a default one is generated. */
		"first_name" => $_REQUEST["FirstName"],              /* Optional. First Name for the new User. */
		"last_name" => $_REQUEST["LastName"],                /* Optional. Last Name for the new User. */
		"s2member_level" => "0",                             /* Optional. Defaults to Level #0 ( a Free Subscriber ). */
        "s2member_ccaps" => "ima_tools,ima_videos,sxsm",             /* Optional. Custom Capabilities that create a special user.  */
		"s2member_notes" => "Infusionsoft Create IMA User",  /* Optional. Administrative notations. */
        "opt_in" => "1",                                             /* Optional. A non-zero value tells s2Member to attempt to process List Servers. */
		"notification" => "1",                               /* Optional. A non-zero value tells s2Member to email the new Member their */
                                                                     /*           username/password and notify the site admininstrator. */
	);

	$result = trim (file_get_contents ("http://www.YourDomain.com/?s2member_pro_remote_op=1", false, stream_context_create (array ("http" => array ("method" => "POST", "header" => "Content-type: application/x-www-form-urlencoded", "content" => "s2member_pro_remote_op=" . urlencode (serialize ($op)))))));

	if (!empty ($result) && !preg_match ("/^Error\:/i", $result) && is_array ($user = @unserialize ($result)))
        {
		echo "Success.  New User created with ID: " . $user["ID"];
        }
	else
	{
		echo "S2 Says " . $result;
	}
?>

1. Edit the above code on your computer in a text editor (or tool like PSPad) using the following guidelines…

A. Replace “your_infusionsoft_api_key_here” with the api key that you find in your InfusionSoft app under the menu Admin->Settings->[Application]->”API”. Enter clear text in the “API Passphrase” box and click [Save] at the bottom. Your Encrypted Key will be displayed. Copy that. NOTE – Do this only ONCE because if you change your API Key, any of the scripts you created before that will break.

B. I chose to create WordPress Usernames as the concatenation of the first and last name of the Infusionsoft user.

C. I use the s2Member Custom Capabilities “ccaps” inside my WordPress code to grant specific access.

D. Change “YourDomain.com” to the name of your domain.

2. Save the above code on your computer as “InfusionCreateUser.php”.

3. Use FTP to copy it onto “YourDomain.Com” into the top-level directory.

4. Inside of Infusionsoft, you create an “Action Set”. Go to the menu CRM->Settings->[Action Sets] and click the [Add An Action Set] button.

5. Name your action set something like “S2 – Create WordPress User on MyDomain”.

6. Under Actions, enter the following…

A. Select “Send an HTTP post to another server”

B. In the box, enter the following: http://www.YourDomain.com/InfusionCreateUser.php

C. Click the [Save] button – the action set is created

D. Add whatever other actions you want; i.e., creating tags, etc.

E. Close the action set dialog box

7. Now the fun begins! Here is how you would create a new user in your WordPress site from inside Infusionsoft…

A. Find the user that you want to use with Contacts->View Contacts and whatever search criteria you need.

B. From the user’s contact page, click on “Select an Action” in the lower right and choose “Apply Actions”.

C. In the Apply Actions dialog, choose “Run Another Action Set” from the dropdown

D. Find and select the action set you created; e.g., “S2 – Create WordPress User on MyDomain” and click the [Save] button

E. Now click the [Apply Actions to ..name..] button

8. Your user is created and the Member ID is returned.

Step 7 is what you repeat over and over again for each user, which is a totally MANUAL process. Of course, you can include that action set inside of any other action set, web form, followup sequence, etc.; anywhere an action set can be used.

If your user is not created, s2Member will return the reason and you will see it displayed on your screen in the same way that you saw the success message. Usually, the problem is that the user already exists inside MyDomain.com WordPress.

Posted: Monday Jan 21st, 2013 at 6:08 pm #38709
Randy King
Username: RandyKing

Yes, absolutely. I can give you the basic steps but, as you will see, some of what you do depends on who your hosting provider is and how/where they keep the FTP credentials for your domain, and where things are stored.

Whatever the situation, you will surely want to learn to navigate with an FTP client; it is essential for working on your WordPress site. Check out this YouTube video for how to use the Filezilla FTP client: http://www.youtube.com/watch?v=N_ag3SqfADs

1. Get the (free) Filezilla FTP client from http://filezilla-project.org/ and install it on your computer.

2. Depending on your hosting provider, you will need to figure out how to get the FTP Username and Password to your site. For example, on Dreamhost, when you set up your domain, you get to choose the name of the user and the password, or you can go to the domain’s page and look it up.

3. Once you have the FTP user/password, configure Filezilla to connect to that site by selecting the menu “File/Site Manager…” – you will add a new site (name it something you’ll recognize) then put in its Username and Password and save that configuration.

4. Once configured, you can select to open FTP access to your site with Filezilla and again, depending on your hosting provider, you may connect to the top-level directory or one above it. For example, if your site is http://www.MyDomain.com, when you connect with the FTP client, you may see a folder called “MyDomain.com” or you may see your WordPress files (e.g., the file “wp-config.php” will be in that folder).

5. When you are in the folder where “wp-config.php” is present, you are at the top level of your WordPress site. It is from here that you navigate first to “wp-content” then to “plugins” – and it is THIS folder where you install the “s2member-pro” folder that we discussed in the first reply.

6. To upload the “s2member-pro” folder, in the “local” window of your FTP client, navigate to the folder where you have extracted the s2member pro files, then right-click on the folder and select “Upload” from the pop-up menu. Again, BE SURE you are uploading the second (inner) “s2member-pro” folder.

This may seem like a lot to digest, but I strongly encourage you to learn to navigate with an FTP client and to get to know how your hosting provider works; it will save you a lot of frustration. The video at the top of this reply will get you started, and there’s tons more help out there – just Google it.

If this is just all too overwhelming, which it certainly can be if you’re new to all this, you may want to get someone to help you or do it for you! There’s no shame in not knowing the ins and outs of everything involved with this stuff. :)

Posted: Monday Jan 21st, 2013 at 4:07 pm #38633
Randy King
Username: RandyKing

Keith,

If you’re looking to do this all the time; i.e., there is no content on the sub-domain page that you ever want to display, then use a re-director plugin attached to that page to do the work for you.

I use a plugin called “Quick Page/Post Redirect Plugin” by Don Fischer to do this.

Once you activate that plugin in the sub-domain site, go to the page that you want to have re-directed and near the bottom tick the “Make Redirect Active” checkbox, enter the “Redirect URL” in the box provided, then set the redirection type to its default, which is 302 (Temporary).

Don’t be confused by the latter setting – a “302 redirect” is what you want, even though your re-direct is permanent. This is because you don’t want search engines permanently storing the new re-directed URL. You want them coming through your sub-domain so that any future changes to your re-direct will continue to work.

HOWEVER, if the sub-domain has legitimate stuff on it that you do want accessed by members, you won’t want to use a re-director plugin. Instead, you can use S2Member shortcodes with a script to accomplish this:

[s2If is_user_logged_in() ]
	<<..stuff that you want to do for logged-in members..>>
[/s2If]

[s2If !is_user_logged_in() ]
	<script type="text/javascript">
		window.location = 'http://www.MyMainDomain.com/';
	</script>
[/s2If]

Consequently, if someone reaching that page IS logged in, they will be presented with the stuff that’s inside the “is_user_logged_in” block, otherwise they will be re-directed to the main domain page.

Note – you should be working in the HTML editor, NOT the visual editor. I frequently just disable the visual editor inside of my WordPress user profile.

  • This reply was modified 3 years, 11 months ago by  Randy King.
Posted: Monday Jan 21st, 2013 at 3:29 pm #38613
Randy King
Username: RandyKing

Hey, Elan –

The first time you do this, there’s some manual gymnastics that you have to go through, but once it’s installed all updates will occur semi-automatically from your WP dashboard. When an update is available, you will update the base framework like any other plugin, then there will be the option to update the Pro piece by providing your S2Member account login and password, which are also saved on that page for the future.

The first time you want to set up Pro, here’s what you need to do:

1. First, ensure that the S2Member standard framework is loaded and activated on your site.
2. Download the ZIP archive from the S2Member website from this page: http://www.s2member.com/pro/ – look for the “Premium Download” box in the upper right.
3. Unzip/extract the archive on your computer; you will see a new folder called “s2member-pro” with another “s2member-pro” folder inside of that one, with the pro files under that.
4. Using your FTP program, upload the second (inner) “s2member-pro” folder onto your site so that the file “pro-module.php” shows up at the path: [..yoursite..]/wp-content/plugins/s2member-pro/pro-module.php

Where many people have trouble is in accidentally loading the first (outer) “s2member-pro” folder so that a second one appears on your website. Don’t do that.

You can get these instructions and more at: http://www.s2member.com/pro/ – click on the “Install/Update” tab.

Posted: Saturday Jan 19th, 2013 at 9:25 am #38307
Randy King
Username: RandyKing

Thanks, Jason – you have no idea how it will simplify my life!

Posted: Saturday Aug 11th, 2012 at 8:19 am #21765
Randy King
Username: RandyKing

Cristián, this is an interesting plugin, and it’s exactly what I’d like to see for editing the _ccaps_ field. Time to put on the hacking hat and see if I can tweak this thing. :)

Meanwhile, as you guys may continue to expand on the API, would love to see “Update User” come next, and maybe someone will beat me to modifying this plugin to work on the ccaps field. At least I am assuming it’s a field in the MySQL somewhere, haven’t looked yet.

Randy

  • This reply was modified 4 years, 5 months ago by  Randy King.
Posted: Friday Aug 10th, 2012 at 9:57 pm #21737
Randy King
Username: RandyKing

Rachel –

I am doing something similar, only for groups of people. I am doing this at the Free Membership (Level 0), but it is applicable to all levels. Here’s one way that you would implement the content access part. And I realize you posted this in the “pre-sales” area, and my answer is very hands-on how-to technical. In case you start playing with it, you can use this… :)

1. Determine the full set of capabilities that you want to extend to people. For example, one or more people get access to a calendar, one or more people get access to “training video 1”, certain others get access to “instructional PDF file 5”. You get the idea, now you have a list of these capabilities.

2. Assign a short mnemonic to each of these capabilities; e.g. from the examples above, you might end up with the mnemonics “pcal”, “trvid1”, “instp5”.

3. Now go to your users table through S2 or WordPress (e.g., Users->All Users), find the person you want to have access to, say, a calendar and instructional PDF 5 and click on their user name or the “Edit” link.

4. Scroll down to the bottom of that page under “s2Member Configuration & Profile Fields”, and find the field named “Custom Capabilities” and in there, type the following: pcal,instp5 and then click “Update User” at the bottom. You just added a comma-separated list of your mnemonics describing the custom capabilities that you want that person to have.

5. Now go to the members-only page, whatever that is for you – perhaps defined under the S2Member control panel heading “s2Member->General Options->Login Welcome Page”, and add code like this…

Hello [s2Get constant="S2MEMBER_CURRENT_USER_FIRST_NAME" /], and welcome to your membership area.  You have been here [s2Get constant="S2MEMBER_CURRENT_USER_LOGIN_COUNTER" /] times before.

<?php if (current_user_can("access_s2member_ccap_pcal")){ ?>
	<a href="http://link-to-calendar-page">Click Here</a> to access your calendar.		
<?php } ?>

<?php if (current_user_can("access_s2member_ccap_trvid1")){ ?>
	<a href="http://link-to-training-video-1">Click Here</a> to access training video 1.		
<?php } ?>

<?php if (current_user_can("access_s2member_ccap_instp5")){ ?>
	<a href="http://link-to-instructional page pdf file">Click Here</a> to download instructional document 5.		
<?php } ?>

Do you see your mnemonic at the end of the “access_s2member_ccap_” constant? It’s just your word tacked onto the end of the constant.

Of course, you need to create the actions necessary for your website when a “custom capability” is set for a person; the above code example just takes them to a specific page (which you should have protected at level 0) or downloads the PDF. It’s worth noting that in the code above, if the person does not have a particular capability that nothing will be displayed for them on the page. They won’t even see the link, say, to training video 1.

It’s certainly not all-inclusive, and only one approach. s2member has tremendous flexibility that becomes more and more apparent as you use it. I hope that gets you thinking about how you might approach the problem.

Randy

  • This reply was modified 4 years, 5 months ago by  Randy King.
Posted: Friday Jul 20th, 2012 at 7:59 am #19828
Randy King
Username: RandyKing

Oh, I am assuming it was the S2 message because it contained login/password credentials returned to the user as a result of registration. However, at first I had not customized anything, so perhaps it was a vanilla WP message now that I think about it. It was short. I think it really had to do with the discrepancy between the From address and the authenticated return path.

Posted: Thursday Jul 19th, 2012 at 3:46 pm #19775
Randy King
Username: RandyKing

Timothy,

Great! It can be a little confusing – I did the same thing you did the first time out and spent a long time looking for all the “pro” features.

As far as Wishlist Member vs. S2 – you will always encounter “religious” issues and statements about which package is better, etc. I believe that it comes down to which package you’re most familiar with using, as long as the features support what you’re trying to do.

I settled on S2 after doing some research based on my feature requirements, and I’m really pleased with the robust functionality and the support. Just last week, I integrated InfusionSoft with S2Member – it’s a loose integration of sorts, but it works great and it will allow me to work with a customer that uses InfusionSoft exclusively for his autoresponders and his list management.

Good luck with your project!

Posted: Thursday Jul 19th, 2012 at 3:41 pm #19774
Randy King
Username: RandyKing

Cristián, been out of town, sorry for the delay. By “standard”, I mean the standard message that comes with S2 informing the newly-registered user of his login credentials. There are two factors: 1) Google claims that the message “is similar to others that have been flagged as spam” and 2) the “From:” header is fabricated because I’m not using my own SMTP server – just defaulting to WordPress/Dreamhost; consequently the header may appear spoofed to Google.

NEW QUESTION ON THIS INTEGRATION…

In the part of the code where the conditional is looking at the variable $result, where does the output of that echo statement go? How do I look at that return value?

Posted: Friday Jul 6th, 2012 at 7:29 am #18459
Randy King
Username: RandyKing

Cristián,

I think I found it – I customized the message and it started showing up. Then, upon closer scrutiny, I found the previous ones in my Google Apps junk mail folder; apparently, the standard message is too close to something that Google feels is spam. Go figure. It may be worth noting that in the email setup section. :)

Randy

Posted: Wednesday Jul 4th, 2012 at 8:23 am #18282
Randy King
Username: RandyKing

Cristián, yes – absolutely. I have been working with Infusionsoft for a few years now, so know my way around pretty well. Would love to help out.

Posted: Wednesday Jul 4th, 2012 at 7:40 am #18273
Randy King
Username: RandyKing

Yes; actually, it’s the only way to do it – to use an FTP program such as FileZilla and load the un-zipped folder to the plugins folder. AGAIN, be very certain that you are uploading the correct folder; when you un-zip the file you will get an “s2member-pro” folder from the unzip program, then UNDER that folder will be ANOTHER “s2member-pro” folder. It is this second folder that gets uploaded to your site.

When you do it, your dashboard will show the “pro” version installed. Going forward, updates will be handled from your dashboard semi-automatically, no more FTP required.

Sorry for the delay in response; for some reason, I didn’t get an email notification from this thread. Will be out of town for a couple of days now.

Posted: Monday Jul 2nd, 2012 at 3:50 pm #18105
Randy King
Username: RandyKing

Hey, Timothy –

You downloaded the file “s2member-pro.zip” then unzipped it locally. This likely produced a directory called “s2member-pro”. Underneath that directory will be another “s2member-pro” directory, then under that will be all the pro files. It is this second directory that you want to upload – not the top-level one.

When you upload, be sure you are loading it under [yoursite]/wp-content/plugins/ – where you will see the s2member free framework directory “s2member”.

When you get done, you should find at least this one file in this exact path: [yoursite]/wp-content/plugins/s2member-pro/pro-module.php

And don’t try to use your site until the upload is complete; it will throw php errors on missing files. :)

Randy

Posted: Wednesday Mar 21st, 2012 at 9:30 am #8727
Randy King
Username: RandyKing

Thanks, Eduán. I like the simplicity of the shortcodes, but certainly can code up the php stuff when need be!

Posted: Wednesday Mar 21st, 2012 at 8:25 am #8719
Randy King
Username: RandyKing

Cristián, thanks, and I actually found another solution that I’ll list here for completeness.

I wanted to display a specific image based on the level of the user. My original logic in shortcodes was:

If (user is logged in)
      some happy content here
      If (user is level 4)
          display level 4 picture
      Endif
      If (user is level 3)
          display level 3 picture
      Endif
      .... etc
Endif

So now what I am doing, which works perfectly and is much cleaner (note the img tag)…

[s2If is_user_logged_in()]
	blah blah blah...

	Your membership entitles you to "[s2Get constant="S2MEMBER_CURRENT_USER_ACCESS_LABEL" /]" benefits.

	<img src='[blogurl]images/member-level-[s2Get constant="S2MEMBER_CURRENT_USER_ACCESS_LEVEL" /]-collage.png' title='[s2Get constant="S2MEMBER_CURRENT_USER_FIRST_NAME" /], you are a [s2Get constant="S2MEMBER_CURRENT_USER_ACCESS_LABEL" /]!' \>

<h2><a href="<?php echo wp_logout_url('my-account'); ?>" title="Logout">Click Here to log out and secure your account</a>
[/s2If]

All this requires is that my individual images appear as …/member-level-X-collage.png, where X is the member level number.

Viewing 25 replies - 26 through 50 (of 59 total)

Old Forums (READ-ONLY): The community now lives at WP Sharks™. If you have an s2Member® Pro question, please use our new Support System.

Contacting s2Member: Please use our Support Center for bug reports, pre-sale questions & technical assistance.