From 9108743193683cc8aba93c2b73fb43c02090220f Mon Sep 17 00:00:00 2001 From: Anton Vanyukov Date: Mon, 8 Jun 2026 13:38:11 +1000 Subject: [PATCH 1/2] Add subscription view shortcode --- .../plugins/memberful-wp/src/expiry_banner.php | 10 +++++----- .../wp-content/plugins/memberful-wp/src/shortcodes.php | 5 +++++ wordpress/wp-content/plugins/memberful-wp/src/urls.php | 4 ++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/wordpress/wp-content/plugins/memberful-wp/src/expiry_banner.php b/wordpress/wp-content/plugins/memberful-wp/src/expiry_banner.php index df40249d..e36cba64 100644 --- a/wordpress/wp-content/plugins/memberful-wp/src/expiry_banner.php +++ b/wordpress/wp-content/plugins/memberful-wp/src/expiry_banner.php @@ -60,8 +60,8 @@ function memberful_wp_render_expiry_banner() { return; } - $account_url = memberful_account_url(); - $message = memberful_wp_expiry_banner_message( $expiry_data, $account_url ); + $renew_url = memberful_subscriptions_url(); + $message = memberful_wp_expiry_banner_message( $expiry_data, $renew_url ); /** * Filters the rendered expiry banner message. @@ -360,14 +360,14 @@ function memberful_wp_get_soonest_expiring_subscription( $user_id ) { * Builds the user-facing banner message. * * @param array $expiry_data Expiry information array. - * @param string $account_url Memberful account URL. + * @param string $renew_url Renewal link URL (the subscriptions section of the member's account). * * @return string */ -function memberful_wp_expiry_banner_message( array $expiry_data, $account_url ) { +function memberful_wp_expiry_banner_message( array $expiry_data, $renew_url ) { $link = wp_sprintf( '%s', - esc_url( $account_url ), + esc_url( $renew_url ), esc_html__( 'Renew now', 'memberful' ) ); $expiring_subscriptions_count = max( 1, (int) ( $expiry_data['expiring_subscriptions_count'] ?? 1 ) ); diff --git a/wordpress/wp-content/plugins/memberful-wp/src/shortcodes.php b/wordpress/wp-content/plugins/memberful-wp/src/shortcodes.php index 42acb5d9..1ade87e7 100755 --- a/wordpress/wp-content/plugins/memberful-wp/src/shortcodes.php +++ b/wordpress/wp-content/plugins/memberful-wp/src/shortcodes.php @@ -1,6 +1,7 @@ '.do_shortcode($content).''; } +function memberful_wp_shortcode_subscriptions_link( $atts, $content ) { + return ''.do_shortcode($content).''; +} + function memberful_wp_shortcode_feeds_link( $atts, $content ) { $url = memberful_feeds_url(); diff --git a/wordpress/wp-content/plugins/memberful-wp/src/urls.php b/wordpress/wp-content/plugins/memberful-wp/src/urls.php index 6f1ddd9c..8c7af06d 100755 --- a/wordpress/wp-content/plugins/memberful-wp/src/urls.php +++ b/wordpress/wp-content/plugins/memberful-wp/src/urls.php @@ -25,6 +25,10 @@ function memberful_account_url( $format = MEMBERFUL_HTML ) { return memberful_url( 'account', $format ); } +function memberful_subscriptions_url( $format = MEMBERFUL_HTML ) { + return memberful_url( 'account/subscriptions', $format ); +} + function memberful_registration_page_url() { return memberful_url( 'register' ); } From d852448c56a42af0592295b6636de8ececa2c17d Mon Sep 17 00:00:00 2001 From: Anton Vanyukov Date: Mon, 8 Jun 2026 13:49:05 +1000 Subject: [PATCH 2/2] Escape URL --- wordpress/wp-content/plugins/memberful-wp/src/shortcodes.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/wordpress/wp-content/plugins/memberful-wp/src/shortcodes.php b/wordpress/wp-content/plugins/memberful-wp/src/shortcodes.php index 1ade87e7..e8162fff 100755 --- a/wordpress/wp-content/plugins/memberful-wp/src/shortcodes.php +++ b/wordpress/wp-content/plugins/memberful-wp/src/shortcodes.php @@ -62,7 +62,7 @@ function memberful_wp_shortcode_account_link( $atts, $content ) { } function memberful_wp_shortcode_subscriptions_link( $atts, $content ) { - return ''.do_shortcode($content).''; + return ''.do_shortcode($content).''; } function memberful_wp_shortcode_feeds_link( $atts, $content ) {