' . "\n"; echo '
'."\n"; echo '
'."\n"; c_ws_plugin__s2member_menu_pages_tb::display (); echo '
'."\n"; echo '

PayPal Buttons

' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '
' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_before_left_sections", get_defined_vars ()); for ($n = 1; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++) // Starting with Level #1 here. { if (($ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_display_levelN_buttons = "ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_display_level" . $n . "_buttons") && apply_filters($ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_display_levelN_buttons, true, get_defined_vars ())) { if (($ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_before_levelN_buttons = "ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_before_level" . $n . "_buttons")) do_action($ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_before_levelN_buttons, get_defined_vars ()); echo '
' . "\n"; echo '
' . "\n"; echo '

Button Code Generator For Level #' . $n . ' Access

' . "\n"; echo '

Very simple. All you do is customize the form fields provided, for each Membership Level that you plan to offer. Then press (Generate Button Code). These special PayPal Buttons are customized to work with s2Member seamlessly. Member accounts will be activated instantly, in an automated fashion. When you, or a Member, cancels their Membership, or fails to make payments on time, s2Member will automatically terminate their Membership privileges. s2Member makes extensive use of the PayPal IPN service. s2Member receives updates from PayPal behind-the-scene.

' . "\n"; echo '

Please note: buttons are NOT saved here. This is only a Button Generator. Once you\'ve generated your Button, copy/paste it into your Membership Options Page. If you lose your Button Code, you\'ll need to come back & re-generate a new one. If you\'re in Sandbox Test-Mode, and you\'re NOT using the Shortcode Format, please remember to come back and re-generate your Buttons before you go live.

' . "\n"; if (($ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_levelN_buttons = "ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_level" . $n . "_buttons")) do_action($ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_levelN_buttons, get_defined_vars ()); echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '
' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '
' . "\n"; echo '
I\'ll offer the first for
Then I want to charge
 
Checkout Page Style
Description:
'; echo '

' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; if (($ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_levelN_buttons_before_shortcode = "ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_level" . $n . "_buttons_before_shortcode")) do_action($ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_levelN_buttons_before_shortcode, get_defined_vars ()); echo 'WordPress Shortcode: (recommended for both the WordPress Visual & HTML Editors)
' . "\n"; $ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/shortcodes/paypal-checkout-button-shortcode.php"))); $ws_plugin__s2member_temp_s = preg_replace ("/%%level%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($n)), $ws_plugin__s2member_temp_s); $ws_plugin__s2member_temp_s = preg_replace ("/%%level_label%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_label"])), $ws_plugin__s2member_temp_s); $ws_plugin__s2member_temp_s = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_s); echo '' . "\n"; echo '

' . "\n"; //260217 //260217 Hidden legacy button template required by menu-pages-s.js generator. $ws_plugin__s2member_temp_button = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/buttons/paypal-checkout-button.php"))); $ws_plugin__s2member_temp_button = preg_replace ("/%%endpoint%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com")), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%paypal_business%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_business"])), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%notify_url%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (home_url ("/?s2member_paypal_notify=1"))), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%cancel_return%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (home_url ("/"))), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%return%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (home_url ("/"))), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%level_label%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["level" . $n . "_label"])), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%level%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($n)), $ws_plugin__s2member_temp_button); echo '' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; if (($ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_after_levelN_buttons = "ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_after_level" . $n . "_buttons")) do_action($ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_after_levelN_buttons, get_defined_vars ()); } } if (apply_filters("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_display_ccap_buttons", (!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()), get_defined_vars ())) { do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_before_ccap_buttons", get_defined_vars ()); echo '
' . "\n"; echo '
' . "\n"; echo '

Button Code Generator For Independent Custom Capabilities

' . "\n"; echo '

For further details, please check your Dashboard: s2Member → API Scripting → Custom Capabiities.

' . "\n"; echo '

With s2Member, you can sell one or more Custom Capabilities using Buy Now functionality, to "existing" Users/Members, regardless of which Membership Level they have on your site (i.e., you could even sell Independent Custom Capabilities to Users at Membership Level #0, normally referred to as Free Subscribers, if you like). So this is quite flexible. Independent Custom Capabilities do NOT rely on any specific Membership Level. That\'s why s2Member refers to these as `Independent` Custom Capabilities, because you can sell Capabilities this way, through Buy Now functionality, and the Customer\'s Membership Level Access, along with any existing paid Subscription they may already have with you, will remain completely unaffected. That being said, if you intend to charge a recurring fee for Custom Capabilities, please use a Subscr. Modification Button instead; because Independent Custom Capabilities can only be sold through Buy Now functionality.

' . "\n"; echo '

Independent Custom Capabilities are added to a Customer\'s account immediately after checkout, and the Customer will have the Custom Capabilities for as long as their Membership lasts, based on their primary Subscription with your site, and/or forever, if they have a Lifetime account with you. In other words, Independent Custom Capabilities will exist on the Customer\'s account forever, or until an EOT (End Of Term) occurs on their primary Subscription with you; in which case s2Member would demote the Customer or apply the configured Delete behavior (based on your End-of-Term configuration), and all Custom Capabilities are removed as well.

' . "\n"; echo '

Very simple. All you do is customize the form fields provided, for each set of Custom Capabilities that you plan to sell. Then press (Generate Button Code). These special PayPal Buttons are customized to work with s2Member seamlessly. The Customer will be granted additional access to one or more Custom Capabilities that you specify; while the Customer\'s Membership Level Access and any existing paid Subscription they may already have with you, will remain completely unaffected.

' . "\n"; echo '

Important Note: Independent Custom Capability Buttons should ONLY be displayed to existing Users/Members, and they MUST be logged-in, BEFORE clicking this Button. Otherwise, post-processing of their transaction will fail to recognize the Customer\'s existing account within WordPress. Please display this Button only to Users/Members that are already logged into their account (perhaps in your Login Welcome Page for s2Member), or in another location where you can be absolutely sure that a User/Member is logged in. s2Member\'s Simple Conditionals could also be used to ensure a User/Member is logged in, by wrapping your Shortcode within a Conditional test. For further details, please see: s2Member → API Scripting → Simple Conditionals.

' . "\n"; echo '

Please note: buttons are NOT saved here. This is only a Button Generator. Once you\'ve generated your Button, copy/paste it into your WordPress Editor. If you lose your Button Code, you\'ll need to come back & re-generate a new one. If you\'re in Sandbox Test-Mode, and you\'re NOT using the Shortcode Format, please remember to come back and re-generate your Buttons before you go live.

' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_ccap_buttons", get_defined_vars ()); echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '
' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '
' . "\n"; echo '
I want to charge
 
Checkout Page Style
Description:
Custom Capabilities
'; echo ''; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_ccap_buttons_before_shortcode", get_defined_vars ()); echo 'WordPress Shortcode: (recommended for both the WordPress Visual & HTML Editors)
' . "\n"; $ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/shortcodes/paypal-ccaps-checkout-button-shortcode.php"))); $ws_plugin__s2member_temp_s = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_s); echo '' . "\n"; echo '

' . "\n"; //260217 //260217 Hidden legacy button template required by menu-pages-s.js generator. $ws_plugin__s2member_temp_button = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/buttons/paypal-ccaps-checkout-button.php"))); $ws_plugin__s2member_temp_button = preg_replace ("/%%endpoint%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com")), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%paypal_business%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_business"])), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%notify_url%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (home_url ("/?s2member_paypal_notify=1"))), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%cancel_return%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (home_url ("/"))), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%return%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (home_url ("/"))), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_button); echo '' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_after_ccap_buttons", get_defined_vars ()); } if (apply_filters("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_display_cancellation_buttons", true, get_defined_vars ())) { do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_before_cancellation_buttons", get_defined_vars ()); echo '
' . "\n"; echo '
' . "\n"; echo '

One Button Does It All For Cancellations (copy/paste)

' . "\n"; echo '

Since all recurring charges are associated with a PayPal Subscription; and every PayPal Subscription is associated with a PayPal Account; your Members will always have a PayPal Account of their own, which is tied to their Membership with you. So... a Member can simply log into their own PayPal account and cancel their Subscription(s) with you at anytime, all on their own. However, some Customers do not realize this. So, if you would like to make it clearer (easier) for Members to cancel their own Subscription(s), you can provide this Cancellation Button for them on your Login Welcome Page, or somewhere in the support section of your website. Note... you don\'t have to use this Cancellation Button at all, if you don\'t want to. It\'s completely optional.

' . "\n"; echo '

Cancellation Process: Very simple. A Member clicks the Cancellation Button. PayPal asks them to log into their PayPal account. Once they\'re logged in, PayPal will display a list of all active Subscriptions they have with you. They choose which ones they want to cancel, and s2Member is notified silently behind-the-scenes, through the PayPal IPN service.

' . "\n"; echo '

Understanding Cancellations: It\'s important to realize that a Cancellation is not an EOT (End Of Term). All that happens during a Cancellation event, is that billing is stopped, and it\'s understood that the Customer is going to lose access, at some point in the future. This does NOT mean, that access will be revoked immediately. A separate EOT event will automatically handle a (demotion or deletion) later, at the appropriate time; which could be several days, or even a year after the Cancellation took place.

' . "\n"; echo '

Some Hairy Details: There might be times whenever you notice that a Member\'s Subscription has been cancelled through PayPal... but, s2Member continues allowing the User access to your site as a paid Member. Please don\'t be confused by this... in 99.9% of these cases, the reason for this is legitimate. s2Member will only process the membership EOT when an EOT (End Of Term) is reached, a refund occurs, a chargeback occurs, or when a cancellation later results in a delayed Auto-EOT by s2Member.

' . "\n"; echo '

s2Member will not process an EOT (End Of Term) until the User has completely used up the time they paid for. In other words, if a User signs up for a monthly Subscription on Jan 1st, and then cancels their Subscription on Jan 15th; technically, they should still be allowed to access the site for another 15 days, and then on Feb 1st, the time they paid for has completely elapsed. At that time, s2Member will process their membership EOT by either assigning the role selected under Demote To Role or applying the configured Delete behavior. s2Member also calculates one extra day (24 hours) into its equation, just to make sure access is not removed sooner than a Customer might expect.

' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_cancellation_buttons", get_defined_vars ()); echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '
' . "\n"; echo '' . "\n"; echo '
' . "\n"; echo '

No configuration necessary.

' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_cancellation_buttons_before_shortcode", get_defined_vars ()); echo 'WordPress Shortcode: (recommended for both the WordPress Visual & HTML Editors)
' . "\n"; $ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/shortcodes/paypal-cancellation-button-shortcode.php"))); echo '' . "\n"; echo '

' . "\n"; //260217 echo 'Legacy PayPal Button Code: (deprecated)
' . "\n"; echo 'Legacy PayPal HTML/PHP button code output has been removed from this generator. Please use the WordPress Shortcode above.' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_after_cancellation_buttons", get_defined_vars ()); } if (apply_filters("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_display_reg_links", true, get_defined_vars ())) { do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_before_reg_links", get_defined_vars ()); echo '
' . "\n"; echo '' . "\n"; echo '
' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_after_reg_links", get_defined_vars ()); } if (apply_filters("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_display_sp_buttons", true, get_defined_vars ())) { do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_before_sp_buttons", get_defined_vars ()); echo '
' . "\n"; echo '
' . "\n"; echo '

Button Code Generator For Specific Post/Page Buttons

' . "\n"; echo '

s2Member now supports an additional layer of functionality (very powerful), which allows you to sell access to specific Posts/Pages that you\'ve created in WordPress. Specific Post/Page Access works independently from Member Level Access. That is, you can sell an unlimited number of Posts/Pages using "Buy Now" Buttons, and your Customers will NOT be required to have a Membership Account with your site in order to receive access. If they are already a Member, that\'s fine, but they won\'t need to be.

' . "\n"; echo '

In other words, Customers will NOT need to login, just to receive access to the Specific Post/Page they purchased access to. s2Member will immediately redirect the Customer to the Specific Post/Page after checkout is completed successfully. An email is also sent to the Customer with a link (see: s2Member → PayPal Options → Specific Post/Page Email). Authentication is handled automatically through self-expiring links, good for 72 hours by default.

' . "\n"; echo '

Specific Post/Page Access, is sort of like selling a product. Only, instead of shipping anything to the Customer, you just give them access to a specific Post/Page on your site; one that you created in WordPress. A Specific Post/Page that is protected by s2Member, might contain a download link for your eBook, access to file & music downloads, access to additional support services, and the list goes on and on. The possibilities with this are endless; as long as your digital product can be delivered through access to a WordPress Post/Page that you\'ve created. To protect Specific Posts/Pages, please see: s2Member → Restriction Options → Specific Post/Page Access. Once you\'ve configured your Specific Post/Page Restrictions, those Posts/Pages will be available in the menus below.

' . "\n"; echo '

Very simple. All you do is customize the form fields provided, for each Post/Page that you plan to sell. Then press (Generate Button Code). These special PayPal Buttons are customized to work with s2Member seamlessly. You can even Package Additional Posts/Pages together into one transaction.

' . "\n"; echo '

Please note: buttons are NOT saved here. This is only a Button Generator. Once you\'ve generated your Button, copy/paste it into your WordPress Editor. If you lose your Button Code, you\'ll need to come back & re-generate a new one. If you\'re in Sandbox Test-Mode, and you\'re NOT using the Shortcode Format, please remember to come back and re-generate your Buttons before you go live.

' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_sp_buttons", get_defined_vars ()); echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '
' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '
' . "\n"; echo '
I want to charge
Expiration
Description
Checkout Page Style
'; echo ''; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_sp_buttons_before_shortcode", get_defined_vars ()); echo 'WordPress Shortcode: (recommended for both the WordPress Visual & HTML Editors)
' . "\n"; $ws_plugin__s2member_temp_s = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/shortcodes/paypal-sp-checkout-button-shortcode.php"))); $ws_plugin__s2member_temp_s = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_s); echo '' . "\n"; echo '

' . "\n"; //260217 //260217 Hidden legacy button template required by menu-pages-s.js generator. $ws_plugin__s2member_temp_button = trim (c_ws_plugin__s2member_utilities::evl (file_get_contents (dirname (dirname (__FILE__)) . "/templates/buttons/paypal-sp-checkout-button.php"))); $ws_plugin__s2member_temp_button = preg_replace ("/%%endpoint%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_sandbox"]) ? "www.sandbox.paypal.com" : "www.paypal.com")), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%paypal_business%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($GLOBALS["WS_PLUGIN__"]["s2member"]["o"]["paypal_business"])), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%notify_url%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (home_url ("/?s2member_paypal_notify=1"))), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%cancel_return%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (home_url ("/"))), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%return%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr (home_url ("/"))), $ws_plugin__s2member_temp_button); $ws_plugin__s2member_temp_button = preg_replace ("/%%custom%%/", c_ws_plugin__s2member_utils_strings::esc_refs (esc_attr ($_SERVER["HTTP_HOST"])), $ws_plugin__s2member_temp_button); echo '' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_after_sp_buttons", get_defined_vars ()); } if (apply_filters("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_display_sp_links", true, get_defined_vars ())) { do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_before_sp_links", get_defined_vars ()); echo '
' . "\n"; echo '' . "\n"; echo '
' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_after_sp_links", get_defined_vars ()); } if (apply_filters("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_display_shortcode_attrs", true, get_defined_vars ())) { do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_before_shortcode_attrs", get_defined_vars ()); echo '
' . "\n"; echo '
' . "\n"; echo '

Shortcode Attributes (Explained In Full Detail)

' . "\n"; echo '

When you generate a Button Code, s2Member will make a Shortcode available to you. Like most Shortcodes for WordPress, s2Member reads Attributes in your Shortcode. These Attributes will be pre-configured by one of s2Member\'s Button Generators automatically; so there really is nothing more you need to do. However, many site owners like to know exactly how these Shortcode Attributes work. Below, is a brief overview of each possible Shortcode Attribute.

' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_shortcode_attrs", get_defined_vars ()); echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '' . "\n"; echo '
' . "\n"; echo '
    ' . "\n"; echo '
  • cancel="0" Cancellation Button. Only valid w/ Membership Level Access. Possible values: 0 = this is NOT a Cancellation Button, 1 = this IS a Cancellation Button.
  • ' . "\n"; echo '
  • cc="USD" 3 character Currency Code. Not valid when cancel="1".
  • ' . "\n"; echo (!is_multisite () || !c_ws_plugin__s2member_utils_conds::is_multisite_farm () || is_main_site ()) ? '
  • ccaps="music,videos" A comma-delimited list of Custom Capabilities. Only valid w/ Membership Level Access and/or Independent Custom Capabilities.
  • ' . "\n" : ''; echo '
  • custom="' . esc_html ($_SERVER["HTTP_HOST"]) . '" must start with your domain. Additional values can be piped in (ex: custom="' . esc_html ($_SERVER["HTTP_HOST"]) . '|cv1|cv2|cv3|etc"). Not valid when cancel="1".
  • ' . "\n"; echo '
  • desc="Gold Membership" A brief purchase Description. Not valid when cancel="1".
  • ' . "\n"; //260920.0141 PayPal Checkout has no separate Digital Goods flow; dg=1 only forces the existing no-shipping behavior. echo '
  • dg="0" Digital Goods directive. Leave this at 0 for normal use. Setting dg="1" forces ns="1" so that no shipping address is requested.
  • ' . "\n"; echo '
  • exp="72" Access Expires (in hours). Only valid when sp="1" for Specific Post/Page Access.
  • ' . "\n"; echo '
  • ids="14" A Post/Page ID#, or a comma-delimited list of IDs. Only valid when sp="1" for Specific Post/Page Access.
  • ' . "\n"; //260920.0000 Clarify which PayPal Checkout output modes actually render and use the shortcode's image attribute. echo '
  • image="default" Button Image. Possible values: default = use the default PayPal image where an image is rendered, https://... = use your custom image. With PayPal Checkout, image= applies to output="anchor". output="button" is rendered by PayPal and does not use this image; output="url" returns only a URL and renders no image.
  • ' . "\n"; //260920.0141 PayPal Checkout can select its own locale when lang is blank; anchor output still uses en_US for the default PayPal image. echo '
  • lang="" Optional PayPal Locale Code (ex: en_US). With PayPal Checkout output="button", this controls the PayPal interface language; leave it blank to let PayPal choose automatically. With output="anchor", it controls the language of the default PayPal image and defaults to en_US.
  • ' . "\n"; //260920.0141 lc is a country/locale hint in PayPal Checkout, not a guaranteed checkout-language setting with a US-English fallback. echo '
  • lc="" Optional 2 character Country Code (ex: US). With PayPal Checkout output="button", this can be used as a country/locale hint; when left blank, PayPal determines the buyer\'s locale automatically. Not valid when cancel="1".
  • ' . "\n"; echo '
  • level="1" Membership Level [1-4] (or, up to the number of configured Levels). Only valid for Buttons providing paid Membership Level Access.' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' Or, with Independent Custom Capabilities this MUST be set to level="*", and ccaps="" must NOT be empty (i.e., level="*" ccaps="music,videos").') . '
  • ' . "\n"; //260920.0141 PayPal deprecated the old modification modes and s2Member now always normalizes modify to 0. echo '
  • modify="0" Legacy PayPal modification directive. PayPal no longer supports the old 1 and 2 values, so s2Member always uses 0.
  • ' . "\n"; //260920.0141 Match the shortcode's actual ns=1 default and distinguish PayPal Checkout behavior from the legacy PayPal Standard values. echo '
  • ns="1" Shipping Address directive. 1 = do not request a shipping address. With legacy PayPal Standard, 0 requests an optional address and 2 requires one. With PayPal Checkout one-time payments, values other than 1 allow PayPal to use the buyer\'s shipping address. Not valid when cancel="1".
  • ' . "\n"; //260919.2346 Explain modern PayPal Checkout output modes in plain language, including the different cancellation behavior for logged-in vs. logged-out visitors. echo '
  • output="button" Output Type. Possible values: button = display the normal PayPal button on your page; for Cancellation Buttons, this can cancel the logged-in member\'s PayPal subscription on-site. anchor = display a clickable PayPal image/link that sends the visitor to PayPal. url = return only the destination URL, so you can build your own link or button. For Cancellation Buttons, output="button" requires the member to be logged in; output="anchor" and output="url" can be used while logged out and send the visitor to PayPal\'s subscription-management page.
  • ' . "\n"; //260920.0141 Checkout Page Style is used by legacy PayPal Standard; the PayPal Checkout flow does not consume this attribute. echo '
  • ps="paypal" Legacy PayPal Standard Page Style. PayPal Checkout ignores this attribute. Not valid when cancel="1".
  • ' . "\n"; echo '
  • ra="0.01" Regular, Buy Now, and/or Recurring Amount. Must be >= 0.01. Not valid when cancel="1".
  • ' . "\n"; echo '
  • rp="1" Regular Period. Only valid w/ Membership Level Access' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' and/or Independent Custom Capabilities') . '. Must be >= 1 (ex: 1 Week, 2 Months, 1 Month, 3 Days).
  • ' . "\n"; echo '
  • rt="M" Regular Term. Only valid w/ Membership Level Access' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' and/or Independent Custom Capabilities') . '. Possible values: D = Days, W = Weeks, M = Months, Y = Years, L = Lifetime.
  • ' . "\n"; echo '
  • rr="1" Recurring directive. Only valid w/ Membership Level Access' . ((is_multisite () && c_ws_plugin__s2member_utils_conds::is_multisite_farm () && !is_main_site ()) ? '' : ' and/or Independent Custom Capabilities') . '. Possible values: 0 = non-recurring "Subscription" with possible Trial Period for free, or at a different Trial Amount; 1 = recurring "Subscription" with possible Trial Period for free, or at a different Trial Amount; BN = non-recurring "Buy Now" functionality, no Trial Period possible.
  • ' . "\n"; echo '
  • rrt="" Recurring Times (i.e., a fixed number of installments). Only valid w/ Membership Level Access. When unspecified, any recurring charges will remain ongoing until cancelled, or until payments start failing. If this is set to 1 or higher the regular recurring charges will only continue for X billing cycles, depending on what you specify. This is only valid when rr="1" for recurring "Subscriptions". Please note that a fixed number of installments, also means a fixed period of access. If a Customer\'s billing is monthly, and you set rrt="3", billing will continue for only 3 monthly installments. After that, billing would stop, and their access to the site would be revoked as well (based on your EOT Behavior setting under: s2Member → PayPal Options).
  • ' . "\n"; echo '
  • rra="1" Reattempt failed payments? Possible values: 0 = do NOT reattempt billing when/if a recurring payment fails; 1 = yes, DO reattempt billing when/if a recurring payment fails. With PayPal Standard integration, PayPal will retry a maximum of 2 times when you set rra="1"; after that, a Subscription would be terminated due to Max Failed Payments having been reached. PayPal Standard integration does NOT make it possible to configure Max Failed Payments, it simply defaults to a value of 2 whenever rra="1", indicating that you DO want to retry failed payments.
  • ' . "\n"; echo '
  • sp="0" Specific Post/Page Button. Possible values: 0 = this is NOT a Specific Post/Page Access Button, 1 = this IS a Specific Post/Page Access Button.
  • ' . "\n"; echo '
  • ta="0.00" Trial Amount. Only valid w/ Membership Level Access. Must be 0 when rt="L" or when rr="BN".
  • ' . "\n"; echo '
  • tp="0" Trial Period. Only valid w/ Membership Level Access. Must be 0 when rt="L" or when rr="BN".
  • ' . "\n"; echo '
  • tt="D" Trial Term. Only valid w/ Membership Level Access. Possible values: D = Days, W = Weeks, M = Months, Y = Years.
  • ' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_during_shortcode_attrs_lis", get_defined_vars ()); echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; echo '
' . "\n"; do_action("ws_plugin__s2member_during_paypal_buttons_page_during_left_sections_after_shortcode_attrs", get_defined_vars ()); } do_action("ws_plugin__s2member_during_paypal_buttons_page_after_left_sections", get_defined_vars ()); echo '
' . "\n"; c_ws_plugin__s2member_menu_pages_rs::display (); echo '
' . "\n"; echo '' . "\n"; } } } new c_ws_plugin__s2member_menu_page_paypal_buttons ();