Simple Membership - Version 4.0.1

Version Description

  • Added the "Button Image URL" field for the Stripe Buy Now type buttons (to allow button image customization).
  • The user role options for the "Admin Dashboard Access Permission" settings field will show the translated values.
  • The settings menu update capability will also respects the "Role" permission set in the "Admin Dashboard Access Permission" settings.
  • Added a check to see if an username exists in the create_wp_user() function.
  • Stripe SCA Subscription button configuration interface - renamed the label from "Stripe Plan ID" to "Stripe API ID" (to match with Stripe's recent interface changes).
Download this release

Release Info

Developer mra13
Plugin Icon 128x128 Simple Membership
Version 4.0.1
Comparing to
See all releases

Code changes from version 4.0.0 to 4.0.1

classes/class.swpm-settings.php CHANGED
@@ -703,10 +703,10 @@ class SwpmSettings {
703
  array(
704
  'item' => 'admin-dashboard-access-permission',
705
  'options' => array(
706
- 'manage_options' => 'Admin',
707
- 'edit_pages' => 'Editor',
708
- 'edit_published_posts' => 'Author',
709
- 'edit_posts' => 'Contributor',
710
  ),
711
  'default' => 'manage_options',
712
  'message' => SwpmUtils::_( 'SWPM admin dashboard is accessible to admin users only (just like any other plugin). You can allow users with other WP user role to access the SWPM admin dashboard by selecting a value here. Note that this option cannot work if you enabled the "Disable Access to WP Dashboard" option in General Settings.' ),
703
  array(
704
  'item' => 'admin-dashboard-access-permission',
705
  'options' => array(
706
+ 'manage_options' => translate_user_role( 'Administrator' ),
707
+ 'edit_pages' => translate_user_role( 'Editor' ),
708
+ 'edit_published_posts' => translate_user_role( 'Author' ),
709
+ 'edit_posts' => translate_user_role( 'Contributor' ),
710
  ),
711
  'default' => 'manage_options',
712
  'message' => SwpmUtils::_( 'SWPM admin dashboard is accessible to admin users only (just like any other plugin). You can allow users with other WP user role to access the SWPM admin dashboard by selecting a value here. Note that this option cannot work if you enabled the "Disable Access to WP Dashboard" option in General Settings.' ),
classes/class.swpm-utils.php CHANGED
@@ -20,8 +20,27 @@ abstract class SwpmUtils {
20
  } else {
21
  define( 'SWPM_MANAGEMENT_PERMISSION', $admin_dashboard_permission );
22
  }
 
 
 
 
 
 
 
 
23
  }
24
 
 
 
 
 
 
 
 
 
 
 
 
25
  public static function subscription_type_dropdown( $selected ) {
26
  return '<option ' . ( ( $selected == SwpmMembershipLevel::NO_EXPIRY ) ? 'selected="selected"' : '' ) . ' value="' . SwpmMembershipLevel::NO_EXPIRY . '">No Expiry</option>' .
27
  '<option ' . ( ( $selected == SwpmMembershipLevel::DAYS ) ? 'selected="selected"' : '' ) . ' value="' . SwpmMembershipLevel::DAYS . '">Day(s)</option>' .
@@ -251,17 +270,32 @@ abstract class SwpmUtils {
251
  //Check if the user has admin role.
252
  $admin_user = SwpmMemberUtils::wp_user_has_admin_role( $wp_user_id );
253
  if ( $admin_user ) {
254
- //This email belongs to an admin user. Update is not allowed on admin users. Show error message then exit.
255
- $error_msg = '<p>This email address (' . $wp_user_data['user_email'] . ') belongs to an admin user. This email cannot be used to register a new account on this site.</p>';
256
  wp_die( $error_msg );
257
  }
258
- }
259
-
260
- //At this point 1) A WP User with this email doesn't exist. Or 2) The associated wp user doesn't have admin role
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
261
  //Lets create a new wp user record or attach the SWPM profile to an existing user accordingly.
262
 
263
  if ( self::is_multisite_install() ) {
264
- //WP Multi-Sit install
265
  global $blog_id;
266
  if ( $wp_user_id ) {
267
  //If user exists then just add him to current blog.
@@ -276,15 +310,23 @@ abstract class SwpmUtils {
276
  $wp_user_id = wpmu_create_user( $wp_user_data['user_login'], $wp_user_data['password'], $wp_user_data['user_email'] );
277
  $role = 'subscriber'; //TODO - add user as a subscriber first. The subsequent update user role function to update the role to the correct one
278
  add_user_to_blog( $blog_id, $wp_user_id, $role );
 
279
  } else {
280
- //WP Single site install
 
 
281
  if ( $wp_user_id ) {
282
  return $wp_user_id;
283
  }
 
 
284
  $wp_user_id = wp_create_user( $wp_user_data['user_login'], $wp_user_data['password'], $wp_user_data['user_email'] );
 
 
 
 
 
285
  }
286
- $wp_user_data['ID'] = $wp_user_id;
287
- wp_update_user( $wp_user_data ); //Core WP function. Updates the user info and role.
288
 
289
  return $wp_user_id;
290
  }
20
  } else {
21
  define( 'SWPM_MANAGEMENT_PERMISSION', $admin_dashboard_permission );
22
  }
23
+
24
+ //Override the settings menu (options.php) update capability according to the role set in "Admin Dashboard Access Permission" option.
25
+ add_filter( 'option_page_capability_swpm-settings-tab-1', 'SwpmUtils::swpm_settings_update_capability' );
26
+ add_filter( 'option_page_capability_swpm-settings-tab-2', 'SwpmUtils::swpm_settings_update_capability' );
27
+ add_filter( 'option_page_capability_swpm-settings-tab-3', 'SwpmUtils::swpm_settings_update_capability' );
28
+ add_filter( 'option_page_capability_swpm-settings-tab-4', 'SwpmUtils::swpm_settings_update_capability' );
29
+ add_filter( 'option_page_capability_swpm-settings-tab-5', 'SwpmUtils::swpm_settings_update_capability' );
30
+
31
  }
32
 
33
+ public static function swpm_settings_update_capability($capability){
34
+ if ( defined('SWPM_MANAGEMENT_PERMISSION') ){
35
+ //Use SWPM defined one.
36
+ $capability = SWPM_MANAGEMENT_PERMISSION;
37
+ } else {
38
+ //Use default.
39
+ $capability = 'manage_options';
40
+ }
41
+ return $capability;
42
+ }
43
+
44
  public static function subscription_type_dropdown( $selected ) {
45
  return '<option ' . ( ( $selected == SwpmMembershipLevel::NO_EXPIRY ) ? 'selected="selected"' : '' ) . ' value="' . SwpmMembershipLevel::NO_EXPIRY . '">No Expiry</option>' .
46
  '<option ' . ( ( $selected == SwpmMembershipLevel::DAYS ) ? 'selected="selected"' : '' ) . ' value="' . SwpmMembershipLevel::DAYS . '">Day(s)</option>' .
270
  //Check if the user has admin role.
271
  $admin_user = SwpmMemberUtils::wp_user_has_admin_role( $wp_user_id );
272
  if ( $admin_user ) {
273
+ //This email belongs to an admin user. Cannot modify/override/use/register using an admin user's email from front-end. Show error message then exit.
274
+ $error_msg = '<p>This email address (' . $wp_user_data['user_email'] . ') belongs to an admin user. This email cannot be used to register a new account on this site for security reasons. Contact site admin.</p>';
275
  wp_die( $error_msg );
276
  }
277
+ } else {
278
+ //Check if the username belongs to an existing wp user account.
279
+ $wp_user_id = username_exists( $wp_user_data['user_login'] );
280
+ if ( $wp_user_id ) {
281
+ //A wp user account exist with this username.
282
+ //Check if the user has admin role.
283
+ $admin_user = SwpmMemberUtils::wp_user_has_admin_role( $wp_user_id );
284
+ if ( $admin_user ) {
285
+ //This Username belongs to an admin user. Cannot modify/override/use/register using an existing admin user's username from front-end. Show error message then exit.
286
+ $error_msg = '<p>This username (' . $wp_user_data['user_login'] . ') belongs to an admin user. It cannot be used to register a new account on this site for security reasons. Contact site admin.</p>';
287
+ wp_die( $error_msg );
288
+ }
289
+ } else {
290
+ //All clear. No user exists with the provided username or email.
291
+ }
292
+ }
293
+
294
+ //At this point 1) A WP User with this email or username doesn't exist. Or 2) The associated wp user doesn't have admin role
295
  //Lets create a new wp user record or attach the SWPM profile to an existing user accordingly.
296
 
297
  if ( self::is_multisite_install() ) {
298
+ //WP Multi-Site install
299
  global $blog_id;
300
  if ( $wp_user_id ) {
301
  //If user exists then just add him to current blog.
310
  $wp_user_id = wpmu_create_user( $wp_user_data['user_login'], $wp_user_data['password'], $wp_user_data['user_email'] );
311
  $role = 'subscriber'; //TODO - add user as a subscriber first. The subsequent update user role function to update the role to the correct one
312
  add_user_to_blog( $blog_id, $wp_user_id, $role );
313
+ //End of WPMU
314
  } else {
315
+ //This is a WP Single site install.
316
+
317
+ //Lets see if an existing WP user exist from the email_exists() or username_exists() check earlier.
318
  if ( $wp_user_id ) {
319
  return $wp_user_id;
320
  }
321
+
322
+ //Try to create a brand new WP user entry.
323
  $wp_user_id = wp_create_user( $wp_user_data['user_login'], $wp_user_data['password'], $wp_user_data['user_email'] );
324
+
325
+ //Update that newly created user's profile with additional data.
326
+ $wp_user_data['ID'] = $wp_user_id;
327
+ wp_update_user( $wp_user_data ); //Core WP function. Updates/Syncs the user info and role.
328
+
329
  }
 
 
330
 
331
  return $wp_user_id;
332
  }
languages/simple-membership.pot CHANGED
@@ -2674,7 +2674,7 @@ msgid "Stripe Subscription Button Configuration"
2674
  msgstr ""
2675
 
2676
  #: views/payments/payment-gateway/admin_stripe_subscription_button.php:109
2677
- msgid "Stripe Plan ID"
2678
  msgstr ""
2679
 
2680
  #: views/payments/payment-gateway/admin_stripe_subscription_button.php:125
2674
  msgstr ""
2675
 
2676
  #: views/payments/payment-gateway/admin_stripe_subscription_button.php:109
2677
+ msgid "Stripe API ID"
2678
  msgstr ""
2679
 
2680
  #: views/payments/payment-gateway/admin_stripe_subscription_button.php:125
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://simple-membership-plugin.com/
4
  Tags: member, members, members only, membership, memberships, register, WordPress membership plugin, content, content protection, paypal, restrict, restrict access, Restrict content, admin, access control, subscription, teaser, protection, profile, login, login page, bbpress, stripe, braintree
5
  Requires at least: 4.0
6
  Tested up to: 5.5
7
- Stable tag: 4.0.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -158,6 +158,13 @@ https://simple-membership-plugin.com/
158
 
159
  == Changelog ==
160
 
 
 
 
 
 
 
 
161
  = 4.0.0 =
162
  - Removed the "Use WordPress Timezone" settings option from the advanced settings menu. This option can conflict with some events management type plugins.
163
  - The plugin will now record the date values according to your WordPress timezone settings (by default).
4
  Tags: member, members, members only, membership, memberships, register, WordPress membership plugin, content, content protection, paypal, restrict, restrict access, Restrict content, admin, access control, subscription, teaser, protection, profile, login, login page, bbpress, stripe, braintree
5
  Requires at least: 4.0
6
  Tested up to: 5.5
7
+ Stable tag: 4.0.1
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
158
 
159
  == Changelog ==
160
 
161
+ = 4.0.1 =
162
+ - Added the "Button Image URL" field for the Stripe Buy Now type buttons (to allow button image customization).
163
+ - The user role options for the "Admin Dashboard Access Permission" settings field will show the translated values.
164
+ - The settings menu update capability will also respects the "Role" permission set in the "Admin Dashboard Access Permission" settings.
165
+ - Added a check to see if an username exists in the create_wp_user() function.
166
+ - Stripe SCA Subscription button configuration interface - renamed the label from "Stripe Plan ID" to "Stripe API ID" (to match with Stripe's recent interface changes).
167
+
168
  = 4.0.0 =
169
  - Removed the "Use WordPress Timezone" settings option from the advanced settings menu. This option can conflict with some events management type plugins.
170
  - The plugin will now record the date values according to your WordPress timezone settings (by default).
simple-wp-membership.php CHANGED
@@ -1,7 +1,7 @@
1
  <?php
2
  /*
3
  Plugin Name: Simple WordPress Membership
4
- Version: 4.0.0
5
  Plugin URI: https://simple-membership-plugin.com/
6
  Author: smp7, wp.insider
7
  Author URI: https://simple-membership-plugin.com/
@@ -19,7 +19,7 @@ include_once('classes/class.simple-wp-membership.php');
19
  include_once('classes/class.swpm-cronjob.php');
20
  include_once('swpm-compat.php');
21
 
22
- define('SIMPLE_WP_MEMBERSHIP_VER', '4.0.0');
23
  define('SIMPLE_WP_MEMBERSHIP_DB_VER', '1.3');
24
  define('SIMPLE_WP_MEMBERSHIP_SITE_HOME_URL', home_url());
25
  define('SIMPLE_WP_MEMBERSHIP_PATH', dirname(__FILE__) . '/');
1
  <?php
2
  /*
3
  Plugin Name: Simple WordPress Membership
4
+ Version: 4.0.1
5
  Plugin URI: https://simple-membership-plugin.com/
6
  Author: smp7, wp.insider
7
  Author URI: https://simple-membership-plugin.com/
19
  include_once('classes/class.swpm-cronjob.php');
20
  include_once('swpm-compat.php');
21
 
22
+ define('SIMPLE_WP_MEMBERSHIP_VER', '4.0.1');
23
  define('SIMPLE_WP_MEMBERSHIP_DB_VER', '1.3');
24
  define('SIMPLE_WP_MEMBERSHIP_SITE_HOME_URL', home_url());
25
  define('SIMPLE_WP_MEMBERSHIP_PATH', dirname(__FILE__) . '/');
views/payments/payment-gateway/admin_stripe_buy_now_button.php CHANGED
@@ -165,6 +165,14 @@ function swpm_create_new_stripe_buy_now_button() {
165
  </td>
166
  </tr>
167
 
 
 
 
 
 
 
 
 
168
  </table>
169
 
170
  <script>
@@ -246,7 +254,7 @@ function swpm_save_new_stripe_buy_now_button_data() {
246
  add_post_meta( $button_id, 'stripe_collect_address', isset( $_POST['collect_address'] ) ? '1' : '' );
247
 
248
  add_post_meta( $button_id, 'return_url', trim( sanitize_text_field( $_REQUEST['return_url'] ) ) );
249
- //add_post_meta($button_id, 'button_image_url', trim(sanitize_text_field($_REQUEST['button_image_url'])));
250
  //Redirect to the edit interface of this button with $button_id
251
  //$url = admin_url() . 'admin.php?page=simple_wp_membership_payments&tab=edit_button&button_id=' . $button_id . '&button_type=' . $button_type;
252
  //Redirect to the manage payment buttons interface
@@ -295,8 +303,8 @@ function swpm_edit_stripe_buy_now_button() {
295
 
296
  $use_global_keys = empty( $use_global_keys ) ? false : true;
297
 
298
- $return_url = get_post_meta( $button_id, 'return_url', true );
299
- //$button_image_url = get_post_meta($button_id, 'button_image_url', true);
300
  ?>
301
  <div class="postbox">
302
  <h3 class="hndle"><label for="title"><?php echo SwpmUtils::_( 'Stripe Buy Now Button Configuration' ); ?></label></h3>
@@ -441,6 +449,14 @@ function swpm_edit_stripe_buy_now_button() {
441
  </td>
442
  </tr>
443
 
 
 
 
 
 
 
 
 
444
  </table>
445
 
446
  <script>
@@ -525,7 +541,7 @@ function swpm_edit_stripe_buy_now_button_data() {
525
  update_post_meta( $button_id, 'stripe_collect_address', isset( $_POST['collect_address'] ) ? '1' : '' );
526
 
527
  update_post_meta( $button_id, 'return_url', trim( sanitize_text_field( $_REQUEST['return_url'] ) ) );
528
- //update_post_meta($button_id, 'button_image_url', trim(sanitize_text_field($_REQUEST['button_image_url'])));
529
 
530
  echo '<div id="message" class="updated fade"><p>Payment button data successfully updated!</p></div>';
531
  }
165
  </td>
166
  </tr>
167
 
168
+ <tr valign="top">
169
+ <th scope="row"><?php echo SwpmUtils::_( 'Button Image URL' ); ?></th>
170
+ <td>
171
+ <input type="text" size="100" name="button_image_url" value="" />
172
+ <p class="description">If you want to customize the look of the button using an image then enter the URL of the image.</p>
173
+ </td>
174
+ </tr>
175
+
176
  </table>
177
 
178
  <script>
254
  add_post_meta( $button_id, 'stripe_collect_address', isset( $_POST['collect_address'] ) ? '1' : '' );
255
 
256
  add_post_meta( $button_id, 'return_url', trim( sanitize_text_field( $_REQUEST['return_url'] ) ) );
257
+ add_post_meta( $button_id, 'button_image_url', esc_url( $_REQUEST['button_image_url'] ) );
258
  //Redirect to the edit interface of this button with $button_id
259
  //$url = admin_url() . 'admin.php?page=simple_wp_membership_payments&tab=edit_button&button_id=' . $button_id . '&button_type=' . $button_type;
260
  //Redirect to the manage payment buttons interface
303
 
304
  $use_global_keys = empty( $use_global_keys ) ? false : true;
305
 
306
+ $return_url = get_post_meta( $button_id, 'return_url', true );
307
+ $button_image_url = get_post_meta( $button_id, 'button_image_url', true );
308
  ?>
309
  <div class="postbox">
310
  <h3 class="hndle"><label for="title"><?php echo SwpmUtils::_( 'Stripe Buy Now Button Configuration' ); ?></label></h3>
449
  </td>
450
  </tr>
451
 
452
+ <tr valign="top">
453
+ <th scope="row"><?php echo SwpmUtils::_( 'Button Image URL' ); ?></th>
454
+ <td>
455
+ <input type="text" size="100" name="button_image_url" value="<?php echo $button_image_url; ?>" />
456
+ <p class="description">If you want to customize the look of the button using an image then enter the URL of the image.</p>
457
+ </td>
458
+ </tr>
459
+
460
  </table>
461
 
462
  <script>
541
  update_post_meta( $button_id, 'stripe_collect_address', isset( $_POST['collect_address'] ) ? '1' : '' );
542
 
543
  update_post_meta( $button_id, 'return_url', trim( sanitize_text_field( $_REQUEST['return_url'] ) ) );
544
+ update_post_meta( $button_id, 'button_image_url', esc_url( $_REQUEST['button_image_url'] ) );
545
 
546
  echo '<div id="message" class="updated fade"><p>Payment button data successfully updated!</p></div>';
547
  }
views/payments/payment-gateway/admin_stripe_sca_buy_now_button.php CHANGED
@@ -165,6 +165,14 @@ function swpm_create_new_stripe_sca_buy_now_button() {
165
  </td>
166
  </tr>
167
 
 
 
 
 
 
 
 
 
168
  </table>
169
 
170
  <script>
@@ -228,7 +236,7 @@ function swpm_save_new_stripe_sca_buy_now_button_data() {
228
  add_post_meta( $button_id, 'stripe_use_global_keys', $stripe_use_global_keys );
229
 
230
  add_post_meta( $button_id, 'return_url', trim( sanitize_text_field( $_REQUEST['return_url'] ) ) );
231
- //add_post_meta($button_id, 'button_image_url', trim(sanitize_text_field($_REQUEST['button_image_url'])));
232
  //Redirect to the edit interface of this button with $button_id
233
  //$url = admin_url() . 'admin.php?page=simple_wp_membership_payments&tab=edit_button&button_id=' . $button_id . '&button_type=' . $button_type;
234
  //Redirect to the manage payment buttons interface
@@ -277,8 +285,8 @@ function swpm_edit_stripe_sca_buy_now_button() {
277
 
278
  $use_global_keys = empty( $use_global_keys ) ? false : true;
279
 
280
- $return_url = get_post_meta( $button_id, 'return_url', true );
281
- //$button_image_url = get_post_meta($button_id, 'button_image_url', true);
282
  ?>
283
  <div class="postbox">
284
  <h3 class="hndle"><label for="title"><?php echo SwpmUtils::_( 'Stripe Buy Now Button Configuration' ); ?></label></h3>
@@ -423,6 +431,14 @@ function swpm_edit_stripe_sca_buy_now_button() {
423
  </td>
424
  </tr>
425
 
 
 
 
 
 
 
 
 
426
  </table>
427
 
428
  <script>
@@ -505,7 +521,7 @@ function swpm_edit_stripe_sca_buy_now_button_data() {
505
  update_post_meta( $button_id, 'stripe_use_global_keys', $stripe_use_global_keys );
506
 
507
  update_post_meta( $button_id, 'return_url', trim( sanitize_text_field( $_REQUEST['return_url'] ) ) );
508
- //update_post_meta($button_id, 'button_image_url', trim(sanitize_text_field($_REQUEST['button_image_url'])));
509
 
510
  echo '<div id="message" class="updated fade"><p>Payment button data successfully updated!</p></div>';
511
  }
165
  </td>
166
  </tr>
167
 
168
+ <tr valign="top">
169
+ <th scope="row"><?php echo SwpmUtils::_( 'Button Image URL' ); ?></th>
170
+ <td>
171
+ <input type="text" size="100" name="button_image_url" value="" />
172
+ <p class="description">If you want to customize the look of the button using an image then enter the URL of the image.</p>
173
+ </td>
174
+ </tr>
175
+
176
  </table>
177
 
178
  <script>
236
  add_post_meta( $button_id, 'stripe_use_global_keys', $stripe_use_global_keys );
237
 
238
  add_post_meta( $button_id, 'return_url', trim( sanitize_text_field( $_REQUEST['return_url'] ) ) );
239
+ add_post_meta( $button_id, 'button_image_url', esc_url( $_REQUEST['button_image_url'] ) );
240
  //Redirect to the edit interface of this button with $button_id
241
  //$url = admin_url() . 'admin.php?page=simple_wp_membership_payments&tab=edit_button&button_id=' . $button_id . '&button_type=' . $button_type;
242
  //Redirect to the manage payment buttons interface
285
 
286
  $use_global_keys = empty( $use_global_keys ) ? false : true;
287
 
288
+ $return_url = get_post_meta( $button_id, 'return_url', true );
289
+ $button_image_url = get_post_meta( $button_id, 'button_image_url', true );
290
  ?>
291
  <div class="postbox">
292
  <h3 class="hndle"><label for="title"><?php echo SwpmUtils::_( 'Stripe Buy Now Button Configuration' ); ?></label></h3>
431
  </td>
432
  </tr>
433
 
434
+ <tr valign="top">
435
+ <th scope="row"><?php echo SwpmUtils::_( 'Button Image URL' ); ?></th>
436
+ <td>
437
+ <input type="text" size="100" name="button_image_url" value="<?php echo $button_image_url; ?>" />
438
+ <p class="description">If you want to customize the look of the button using an image then enter the URL of the image.</p>
439
+ </td>
440
+ </tr>
441
+
442
  </table>
443
 
444
  <script>
521
  update_post_meta( $button_id, 'stripe_use_global_keys', $stripe_use_global_keys );
522
 
523
  update_post_meta( $button_id, 'return_url', trim( sanitize_text_field( $_REQUEST['return_url'] ) ) );
524
+ update_post_meta( $button_id, 'button_image_url', esc_url( $_REQUEST['button_image_url'] ) );
525
 
526
  echo '<div id="message" class="updated fade"><p>Payment button data successfully updated!</p></div>';
527
  }
views/payments/payment-gateway/admin_stripe_sca_subscription_button.php CHANGED
@@ -118,12 +118,12 @@ function swpm_render_new_edit_stripe_sca_subscription_button_interface( $opts, $
118
  </tr>
119
 
120
  <tr valign="top">
121
- <th scope="row"><?php echo SwpmUtils::_( 'Stripe Plan ID' ); ?></th>
122
  <td>
123
  <input type="text" name="stripe_plan_id" value="<?php echo ( $edit ? $opts['stripe_plan_id'][0] : '' ); ?>" required />
124
  <p class="description">
125
  ID of the plan that you want subscribers to be assigned to. You can get more details in the
126
- <a href="https://simple-membership-plugin.com/create-stripe-subscription-button-membership-payment/" target="_blank">documentation</a>.
127
  </p>
128
  </td>
129
  </tr>
118
  </tr>
119
 
120
  <tr valign="top">
121
+ <th scope="row"><?php echo SwpmUtils::_( 'Stripe API ID' ); ?></th>
122
  <td>
123
  <input type="text" name="stripe_plan_id" value="<?php echo ( $edit ? $opts['stripe_plan_id'][0] : '' ); ?>" required />
124
  <p class="description">
125
  ID of the plan that you want subscribers to be assigned to. You can get more details in the
126
+ <a href="https://simple-membership-plugin.com/sca-compliant-stripe-subscription-button/" target="_blank">documentation</a>.
127
  </p>
128
  </td>
129
  </tr>
views/payments/payment-gateway/admin_stripe_subscription_button.php CHANGED
@@ -118,7 +118,7 @@ function swpm_render_new_edit_stripe_subscription_button_interface( $opts, $edit
118
  </tr>
119
 
120
  <tr valign="top">
121
- <th scope="row"><?php echo SwpmUtils::_( 'Stripe Plan ID' ); ?></th>
122
  <td>
123
  <input type="text" name="stripe_plan_id" value="<?php echo ( $edit ? $opts['stripe_plan_id'][0] : '' ); ?>" required />
124
  <p class="description">
118
  </tr>
119
 
120
  <tr valign="top">
121
+ <th scope="row"><?php echo SwpmUtils::_( 'Stripe API ID' ); ?></th>
122
  <td>
123
  <input type="text" name="stripe_plan_id" value="<?php echo ( $edit ? $opts['stripe_plan_id'][0] : '' ); ?>" required />
124
  <p class="description">