Skip to content

Instantly share code, notes, and snippets.

@thenbrent
Last active October 19, 2023 06:22
Show Gist options
  • Star 18 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save thenbrent/8851287 to your computer and use it in GitHub Desktop.
Save thenbrent/8851287 to your computer and use it in GitHub Desktop.
Remove any given button from the My Subscriptions table on the My Account page. By default, only the "Change Payment Method" button is removed, but you can uncomment additional actions to remove those buttons also.
<?php
/**
* Plugin Name: Remove Subscription Action Buttons from My Account
* Plugin URI: https://gist.github.com/thenbrent/8851287/
* Description: Remove any given button from the <a href="http://docs.woothemes.com/document/subscriptions/customers-view/#section-2">My Subscriptions</a> table on the My Account page. By default, only the "Change Payment Method" button is removed, but you can uncomment additional actions to remove those buttons also.
* Author: Brent Shepherd
* Author URI:
* Version: 2.0
*/
/**
* Remove the "Change Payment Method" button from the My Subscriptions table.
*
* This isn't actually necessary because @see eg_subscription_payment_method_cannot_be_changed()
* will prevent the button being displayed, however, it is included here as an example of how to
* remove just the button but allow the change payment method process.
*/
function eg_remove_my_subscriptions_button( $actions, $subscription ) {
foreach ( $actions as $action_key => $action ) {
switch ( $action_key ) {
case 'change_payment_method': // Hide "Change Payment Method" button?
// case 'change_address': // Hide "Change Address" button?
// case 'switch': // Hide "Switch Subscription" button?
// case 'resubscribe': // Hide "Resubscribe" button from an expired or cancelled subscription?
// case 'pay': // Hide "Pay" button on subscriptions that are "on-hold" as they require payment?
// case 'reactivate': // Hide "Reactive" button on subscriptions that are "on-hold"?
// case 'cancel': // Hide "Cancel" button on subscriptions that are "active" or "on-hold"?
unset( $actions[ $action_key ] );
break;
default:
error_log( '-- $action = ' . print_r( $action, true ) );
break;
}
}
return $actions;
}
add_filter( 'wcs_view_subscription_actions', 'eg_remove_my_subscriptions_button', 100, 2 );
@Onyx-VueCare
Copy link

I uploaded this code as a plugin to the wordpress and activated this plugin, nothing happened. So I went to this folder
/wp-content/plugins/woocommerce-subscriptions/templates/myaccount/
and changed view-subscription.php

Original:

        <tr>
            <td><?php esc_html_e( 'Actions', 'woocommerce-subscriptions' ); ?></td>
            <td>
                <?php foreach ( $actions as $key => $action ) : ?>
                    <a href="<?php echo esc_url( $action['url'] ); ?>" class="button <?php echo sanitize_html_class( $key ) ?>"><?php echo esc_html( $action['name'] ); ?></a>
                <?php endforeach; ?>
            </td>
        </tr>

New:

        <tr>
            <td>Modify Subscriptions</td>
            <td>Contact Us</td>
        </tr>

Maybe someone can tell me how to make this snippet work instead.

@thenbrent
Copy link
Author

I've just updated the gist to be compatible with Subscriptions 2.0.

@Onyx-VueCare
Copy link

Thank you so much, good sir! It works flawlessly. Also, you can add suspend there. I just tested it, it works as well.

Thank you again!!!

@dsundmacher
Copy link

This no longer works. It may need to be changed due to changes in the latest version of the plugin?

@thriveweb
Copy link

@dsundmacher you might be looking for an older version of this code if you are not using Subscriptions 2.0

See the revisions.

@thenbrent
Copy link
Author

Also, you can add suspend there.

@Onyx-VueCare there is a setting to disable or restrict customer suspension: https://docs.woothemes.com/document/subscriptions/store-manager-guide/#misc-settings It's better to use that than custom code. 😄

@TheCrucible
Copy link

Woo version 2.5.2 on my install and it works perfectly for me. Awesome little plugin, thanks Brent.

@dberz
Copy link

dberz commented Apr 8, 2016

Can anyone recommend how to apply this functionality ONLY to subscriptions (products) of a particular CATEGORY?

@rvpatel
Copy link

rvpatel commented Aug 3, 2016

@thenbrent
Version: 2.0 how to manage
Remove cancel button which order has not completed 2 months please help us.

I have created code for old version related to 1.5.29.

function eg_remove_my_subscriptions_button($actions, $subscriptions) {
    foreach (array_reverse($subscriptions) as $subscription_key => $subscription) {
        if (!empty($subscription['product_id'])):
            $order_id = $subscription['order_id'];
            $id = $subscription['product_id'];
            $key = $subscription_key;

            $date1 = date_create($subscription['start_date']);
            $date2 = date_create();
            $difff = date_diff($date2, $date1);

            //echo '<pre>';
            //print_r($difff);                
            //echo 'months'.$difff->m;
            //echo 'days'.$difff->d;
            //echo 'year'.$difff->y;

            $limit_data = get_post_meta($id, 'cancel_subscribe_limit_months');
            if (isset($limit_data) && !empty($limit_data[0])):
                $ymonth = 0;
                if ($difff->Y > 1):
                    $ymonth = $difff->Y * 12;
                endif;

                $months_count = $ymonth + $difff->m;
                if ($months_count < $limit_data[0]) :

                    foreach ($actions as $subscription_key => $action_buttons):
                        if ($subscription_key == $key):
                            foreach ($action_buttons as $action => $button):
                                switch ($action):
                                    case 'cancel':
                                        unset($actions[$subscription_key][$action]);
                                        //$actions[ $subscription_key ]['cancel']['name'] = apply_filters( 'woocommerce_change_payment_button_text', __( $order_id, 'woocommerce-subscriptions' ) );
                                        break;
                                    default:
                                        error_log('-- $action = ' . print_r($action, true));
                                        break;
                                endswitch;
                            endforeach;
                        endif;
                    endforeach;
                endif;

            endif;
        endif;
    }
    return $actions;
}
add_filter('woocommerce_my_account_my_subscriptions_actions', 'eg_remove_my_subscriptions_button', 100, 2);

@rvpatel
Copy link

rvpatel commented Aug 8, 2016

@thenbrent :
can u please guide to me for subscription renewal?

I have purchase one subscription and this one next payment date after 2 days so "nextpayment" process which one executed.
our system "plugin" or payment getway now i have used paypal & authorized.net cim

@moussari
Copy link

Hello,

I am not really a programmer per se.

I would like to remove the Action: Cancel from the my subscription.

what should i do? can someone help?

thanks

@davidleeschneider
Copy link

Hi @moussari

Simply copy the above code (starting from line 2) and paste it into your theme's functions.php file.
The functions.php file is located in 'wp-content/themes/your-theme'

You have to make sure you remove the two slashes '//' for each button you you want to remove in line 22 to 28.

I hope that helps.

Regards,
David

@tanialeyvac
Copy link

Hi, I'd like to hide the Cancel or Suspend button 5 days before the renew date.
Can someone help me complete the code with that conditional please?

@ldgarc
Copy link

ldgarc commented Mar 15, 2018

Wonderful! I edited your code to disable the "Cancel" and "Suspend" buttons on specific subscription periods of 3, 6 and 12 months.

function disable_cancel_suspend( $actions, $subscription ) {
  
  $subtime = $subscription->billing_interval."-".$subscription->billing_period;
	if ( !in_array($subtime, array('3-month','6-month','1-year'), true ) ) {
    foreach ( $actions as $action_key => $action ) {
      switch ( $action_key ) {
      	case 'suspend':		// Hide "Suspend" button
      	case 'cancel':			// Hide "Cancel" button
      		unset( $actions[ $action_key ] );
      		break;
        default: 
          	error_log( '-- $action = ' . print_r( $action, true ) );
          	break;
      }
    }
  }
  
	return $actions;
}
add_filter( 'wcs_view_subscription_actions', 'disable_cancel_suspend', 100, 2);

@usernametaken999
Copy link

Dear smart folks, could someone please give detailed instructions on exactly how to add this snippet? I do not code, so don't be afraid to instruct me like I'm someones nice grandmother. I tried to add the code to the wcs-functions.php file, which disabled my whole site, and I uploaded the zip as a plugin, which did nothing at all. So please, the person with the best communication skills in here - can you help? Thank you ! <3 !

@srjahir32
Copy link

srjahir32 commented Oct 2, 2018

@thenbrent
Version: 2.0 how to manage
Remove cancel button which order has not completed 2 months please help us.

I have created code for old version related to 1.5.29.

function eg_remove_my_subscriptions_button($actions, $subscriptions) {
    foreach (array_reverse($subscriptions) as $subscription_key => $subscription) {
        if (!empty($subscription['product_id'])):
            $order_id = $subscription['order_id'];
            $id = $subscription['product_id'];
            $key = $subscription_key;

            $date1 = date_create($subscription['start_date']);
            $date2 = date_create();
            $difff = date_diff($date2, $date1);

            //echo '<pre>';
            //print_r($difff);                
            //echo 'months'.$difff->m;
            //echo 'days'.$difff->d;
            //echo 'year'.$difff->y;

            $limit_data = get_post_meta($id, 'cancel_subscribe_limit_months');
            if (isset($limit_data) && !empty($limit_data[0])):
                $ymonth = 0;
                if ($difff->Y > 1):
                    $ymonth = $difff->Y * 12;
                endif;

                $months_count = $ymonth + $difff->m;
                if ($months_count < $limit_data[0]) :

                    foreach ($actions as $subscription_key => $action_buttons):
                        if ($subscription_key == $key):
                            foreach ($action_buttons as $action => $button):
                                switch ($action):
                                    case 'cancel':
                                        unset($actions[$subscription_key][$action]);
                                        //$actions[ $subscription_key ]['cancel']['name'] = apply_filters( 'woocommerce_change_payment_button_text', __( $order_id, 'woocommerce-subscriptions' ) );
                                        break;
                                    default:
                                        error_log('-- $action = ' . print_r($action, true));
                                        break;
                                endswitch;
                            endforeach;
                        endif;
                    endforeach;
                endif;

            endif;
        endif;
    }
    return $actions;
}
add_filter('woocommerce_my_account_my_subscriptions_actions', 'eg_remove_my_subscriptions_button', 100, 2);

@rvpatel Were you able to solve this issue ? I want similar solution.

@aviash1
Copy link

aviash1 commented Feb 6, 2019

Hi everyone, is it possible to relocate the "Change Payment" button to the "Payment Methods" tab? It's currently in the "My Subscription" tab. Thank you for you help!

@Petje1972
Copy link

@Tenbrent,

Could you help me out?, the v2.0 code from above does not work for me.
The function is called but the only item in the $actions array is 'cancel'.
I would like to hide the 'Upgrade or downgrade'-button.
This button is located in the Subscription Totals-section below the section containing the 'Cancel'-button.

Knipsel

Grtz Patrick

@boping
Copy link

boping commented May 16, 2019

@Petje1972 You can set it in wp-admin/woocommerce/setting/suscription/Switching

Allow Switching choose never

@boping
Copy link

boping commented May 16, 2019

do you know how can i edit the button's text?

@FOGAOllie
Copy link

Hey everyone - does anyone know how to re-order the action buttons on the Subscription panel? I want to switch the buttons around a bit...

@justinh00k
Copy link

We are attempting to provide subscriptions at a discounted rate, provided they signup for a minimum of three months. Is there a way to conditionally hide the "Cancel" button until 3 months/pay periods have elapsed?

@anderslundyo
Copy link

anderslundyo commented Feb 10, 2020

@justinh00k

you can take the above snippet, and use some built-in functions to get data out of the current users subscription. This example uses 5 days.

	$users_subscriptions = wcs_get_users_subscriptions(get_current_user_id());
	foreach ($users_subscriptions as $subscription):
		$five_days_after_start = strtotime($subscription->get_date('start') .' + 5 days');
		$now                   = time();

		//If five days has past, do nothing
		if ($five_days_after_start < $now) {
			return $actions;
		}
	endforeach;

You put this snippet in the top of the above function. You then proceed to uncomment the section about "cancel".
So, this above code will prevent removing the cancel button if 5 days or more have past.

My whole function looks like this.

/*-------------- Remove cancellation button if account is under five days old  -------------*/
function eg_remove_my_subscriptions_button( $actions, $subscription ) {

	//If no active subscription is found, do nothing
	if (!has_active_subscription()) {
		return $actions;
	}

	$users_subscriptions = wcs_get_users_subscriptions(get_current_user_id());
	foreach ($users_subscriptions as $subscription):
		$five_days_after_start = strtotime($subscription->get_date('start') .' + 5 days');
		$now                   = time();

		//If five days has past, do nothing
		if ($five_days_after_start < $now) {
			return $actions;
		}


		foreach ( $actions as $action_key => $action ) {
			switch ( $action_key ) {
				// case 'change_payment_method':	// Hide "Change Payment Method" button?
				// case 'change_address':		// Hide "Change Address" button?
				// case 'switch':			// Hide "Switch Subscription" button?
				// case 'resubscribe':		// Hide "Resubscribe" button from an expired or cancelled subscription?
				// case 'pay':			// Hide "Pay" button on subscriptions that are "on-hold" as they require payment?
				// case 'reactivate':		// Hide "Reactive" button on subscriptions that are "on-hold"?
				case 'cancel':			// Hide "Cancel" button on subscriptions that are "active" or "on-hold"?
					unset( $actions[ $action_key ] );
					// $actions['cancel_information'] = array(
					// 	'url' => '',
					// 	'name' => 'Du kan opsige dit abonnement d. '. date('d-m-Y H:i:s', $five_days_after_start),
					// );
					break;
				default:
					error_log( '-- $action = ' . print_r( $action, true ) );
					break;
			}
		}

		return $actions;
	endforeach;
}
add_filter( 'wcs_view_subscription_actions', 'eg_remove_my_subscriptions_button', 100, 2 );

@psc-jr
Copy link

psc-jr commented Aug 31, 2020

I Can't get rid of the Cancel Button under My Subscription page on My Account. I have done all you said above.

`function eg_remove_my_subscriptions_button( $actions, $subscription ) {

foreach ( $actions as $action_key => $action ) {
	switch ( $action_key ) {
		case 'change_payment_method':	// Hide "Change Payment Method" button?

// case 'change_address': // Hide "Change Address" button?
// case 'switch': // Hide "Switch Subscription" button?
// case 'resubscribe': // Hide "Resubscribe" button from an expired or cancelled subscription?
// case 'pay': // Hide "Pay" button on subscriptions that are "on-hold" as they require payment?
// case 'reactivate': // Hide "Reactive" button on subscriptions that are "on-hold"?
case 'cancel': // Hide "Cancel" button on subscriptions that are "active" or "on-hold"?
unset( $actions[ $action_key ] );
break;
default:
error_log( '-- $action = ' . print_r( $action, true ) );
break;
}
}

return $actions;

}
add_filter( 'wcs_view_subscription_actions', 'eg_remove_my_subscriptions_button', 100, 2 );`

@psc-jr
Copy link

psc-jr commented Aug 31, 2020

Can someone help?

@psc-jr
Copy link

psc-jr commented Aug 31, 2020

Hi @moussari

Simply copy the above code (starting from line 2) and paste it into your theme's functions.php file.
The functions.php file is located in 'wp-content/themes/your-theme'

You have to make sure you remove the two slashes '//' for each button you you want to remove in line 22 to 28.

I hope that helps.

Regards,
David

I have done exactly like you said and nothing changed
Screen Shot 2020-08-31 at 10 05 25 pm

@arjun1638
Copy link

hi @paulocauhi

you try the following:

foreach ( $actions as $action_key => $action ) {
    switch ( $action_key ) {
        case 'cancel':
	    unset( $actions[ $action_key ] );
	    break;
       default: 
            error_log( '-- $action = ' . print_r( $action, true ) );
            break;
    }
}

@AlexisJamin
Copy link

Hi @paulocauhi

Did you find any solution ?

I have WC Subscriptions v3.0.10

I tried the code above and the fork from @shahidbahader

Capture d’écran 2020-12-06 à 20 16 34

And still :

Capture d’écran 2020-12-06 à 20 12 01

@thenbrent can you help me please ? 🙏

Thanks

@jimmy0ne
Copy link

jimmy0ne commented May 29, 2021

Hello everyone,

it worked great for me. I tried it several times, at first my whole page crashed, but after trying it several times again, it worked! I am happy! Thanks a lot!


  1. Install FileZilla https://filezilla-project.org/
  2. Open https://wordpress.com/hosting-config/
  3. Open FileZilla on your PC / laptop
  4. At the top left, enter your data under "Server, Username, Password and Port" as shown at https://wordpress.com/hosting-config/ and click on "Connect"
  5. Navigate in FileZilla to "htdocs / wp-content / themes /" and select your active theme, for me it's "Astra" so I navigate to "htdocs / wp-content / themes / Astra"
  6. First download "functions.php" on your PC / laptop as security
  7. Then delete "functions.php" in FileZilla
  8. Make a copy of "functions.php" on your PC / laptop (so you have 2 "functions.php", maybe "functions.php" and "functions-copy.php")
  9. Open "functions.php" WITH NotePad or your Editor (on Windows) (not with Microsoft Word or any other word processing program) on your PC / laptop
  10. Enter the additional code (like the one above):
/**
 * Plugin Name: Remove Subscription Action Buttons from My Account
 * Plugin URI: https://gist.github.com/thenbrent/8851287/
 * Description: Remove any given button from the <a href="http://docs.woothemes.com/document/subscriptions/customers-view/#section-2">My Subscriptions</a> table on the My Account page. By default, only the "Change Payment Method" button is removed, but you can uncomment additional actions to remove those buttons also.
 * Author: Brent Shepherd
 * Author URI:
 * Version: 2.0
 */

/**
 * Remove the "Change Payment Method" button from the My Subscriptions table.
 *
 * This isn't actually necessary because @see eg_subscription_payment_method_cannot_be_changed()
 * will prevent the button being displayed, however, it is included here as an example of how to
 * remove just the button but allow the change payment method process.
 */
function eg_remove_my_subscriptions_button( $actions, $subscription ) {

	foreach ( $actions as $action_key => $action ) {
		switch ( $action_key ) {
			case 'change_payment_method':	// Hide "Change Payment Method" button?
//			case 'change_address':		// Hide "Change Address" button?
//			case 'switch':			// Hide "Switch Subscription" button?
//			case 'resubscribe':		// Hide "Resubscribe" button from an expired or cancelled subscription?
//			case 'pay':			// Hide "Pay" button on subscriptions that are "on-hold" as they require payment?
//			case 'reactivate':		// Hide "Reactive" button on subscriptions that are "on-hold"?
//			case 'cancel':			// Hide "Cancel" button on subscriptions that are "active" or "on-hold"?
				unset( $actions[ $action_key ] );
				break;
			default: 
				error_log( '-- $action = ' . print_r( $action, true ) );
				break;
		}
	}

	return $actions;
}
add_filter( 'wcs_view_subscription_actions', 'eg_remove_my_subscriptions_button', 100, 2 );

Now I don't know if it is important WHERE you enter the code, but I entered it above, so the whole coder looks like this:

<?php
/**
 * Astra functions and definitions
 *
 * @link https://developer.wordpress.org/themes/basics/theme-functions/
 *
 * @package Astra
 * @since 1.0.0
 */
 
 

 /**
 * Plugin Name: Remove Subscription Action Buttons from My Account
 * Plugin URI: https://gist.github.com/thenbrent/8851287/
 * Description: Remove any given button from the <a href="http://docs.woothemes.com/document/subscriptions/customers-view/#section-2">My Subscriptions</a> table on the My Account page. By default, only the "Change Payment Method" button is removed, but you can uncomment additional actions to remove those buttons also.
 * Author: Brent Shepherd
 * Author URI:
 * Version: 2.0
 */

/**
 * Remove the "Change Payment Method" button from the My Subscriptions table.
 *
 * This isn't actually necessary because @see eg_subscription_payment_method_cannot_be_changed()
 * will prevent the button being displayed, however, it is included here as an example of how to
 * remove just the button but allow the change payment method process.
 */
function eg_remove_my_subscriptions_button( $actions, $subscription ) {

	foreach ( $actions as $action_key => $action ) {
		switch ( $action_key ) {
			case 'change_payment_method':	// Hide "Change Payment Method" button?
//			case 'change_address':		// Hide "Change Address" button?
//			case 'switch':			// Hide "Switch Subscription" button?
//			case 'resubscribe':		// Hide "Resubscribe" button from an expired or cancelled subscription?
//			case 'pay':			// Hide "Pay" button on subscriptions that are "on-hold" as they require payment?
//			case 'reactivate':		// Hide "Reactive" button on subscriptions that are "on-hold"?
			case 'cancel':			// Hide "Cancel" button on subscriptions that are "active" or "on-hold"?
				unset( $actions[ $action_key ] );
				break;
			default: 
				error_log( '-- $action = ' . print_r( $action, true ) );
				break;
		}
	}

	return $actions;
}
add_filter( 'wcs_view_subscription_actions', 'eg_remove_my_subscriptions_button', 100, 2 );
 
 


if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * Define Constants
 */
define( 'ASTRA_THEME_VERSION', '3.4.6' );
define( 'ASTRA_THEME_SETTINGS', 'astra-settings' );
define( 'ASTRA_THEME_DIR', trailingslashit( get_template_directory() ) );
define( 'ASTRA_THEME_URI', trailingslashit( esc_url( get_template_directory_uri() ) ) );


/**
 * Minimum Version requirement of the Astra Pro addon.
 * This constant will be used to display the notice asking user to update the Astra addon to the version defined below.
 */
define( 'ASTRA_EXT_MIN_VER', '3.4.2' );

/**
 * Setup helper functions of Astra.
 */
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-theme-options.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-theme-strings.php';
require_once ASTRA_THEME_DIR . 'inc/core/common-functions.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-icons.php';

/**
 * Update theme
 */
require_once ASTRA_THEME_DIR . 'inc/theme-update/class-astra-theme-update.php';
require_once ASTRA_THEME_DIR . 'inc/theme-update/astra-update-functions.php';
require_once ASTRA_THEME_DIR . 'inc/theme-update/class-astra-theme-background-updater.php';
require_once ASTRA_THEME_DIR . 'inc/theme-update/class-astra-pb-compatibility.php';


/**
 * Fonts Files
 */
require_once ASTRA_THEME_DIR . 'inc/customizer/class-astra-font-families.php';
if ( is_admin() ) {
	require_once ASTRA_THEME_DIR . 'inc/customizer/class-astra-fonts-data.php';
}

require_once ASTRA_THEME_DIR . 'inc/customizer/class-astra-fonts.php';

require_once ASTRA_THEME_DIR . 'inc/dynamic-css/container-layouts.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-walker-page.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-enqueue-scripts.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-gutenberg-editor-css.php';
require_once ASTRA_THEME_DIR . 'inc/class-astra-dynamic-css.php';

/**
 * Custom template tags for this theme.
 */
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-attr.php';
require_once ASTRA_THEME_DIR . 'inc/template-tags.php';

require_once ASTRA_THEME_DIR . 'inc/widgets.php';
require_once ASTRA_THEME_DIR . 'inc/core/theme-hooks.php';
require_once ASTRA_THEME_DIR . 'inc/admin-functions.php';
require_once ASTRA_THEME_DIR . 'inc/core/sidebar-manager.php';

/**
 * Markup Functions
 */
require_once ASTRA_THEME_DIR . 'inc/markup-extras.php';
require_once ASTRA_THEME_DIR . 'inc/extras.php';
require_once ASTRA_THEME_DIR . 'inc/blog/blog-config.php';
require_once ASTRA_THEME_DIR . 'inc/blog/blog.php';
require_once ASTRA_THEME_DIR . 'inc/blog/single-blog.php';
require_once ASTRA_THEME_DIR . 'inc/modules/related-posts/related-posts.php';
/**
 * Markup Files
 */
require_once ASTRA_THEME_DIR . 'inc/template-parts.php';
require_once ASTRA_THEME_DIR . 'inc/class-astra-loop.php';
require_once ASTRA_THEME_DIR . 'inc/class-astra-mobile-header.php';

/**
 * Functions and definitions.
 */
require_once ASTRA_THEME_DIR . 'inc/class-astra-after-setup-theme.php';

// Required files.
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-admin-helper.php';

require_once ASTRA_THEME_DIR . 'inc/schema/class-astra-schema.php';

if ( is_admin() ) {

	/**
	 * Admin Menu Settings
	 */
	require_once ASTRA_THEME_DIR . 'inc/core/class-astra-admin-settings.php';
	require_once ASTRA_THEME_DIR . 'inc/lib/notices/class-astra-notices.php';

	/**
	 * Metabox additions.
	 */
	require_once ASTRA_THEME_DIR . 'inc/metabox/class-astra-meta-boxes.php';
}

require_once ASTRA_THEME_DIR . 'inc/metabox/class-astra-meta-box-operations.php';


/**
 * Customizer additions.
 */
require_once ASTRA_THEME_DIR . 'inc/customizer/class-astra-customizer.php';


/**
 * Compatibility
 */
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-jetpack.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/class-astra-woocommerce.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/edd/class-astra-edd.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/lifterlms/class-astra-lifterlms.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/learndash/class-astra-learndash.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-beaver-builder.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-bb-ultimate-addon.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-contact-form-7.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-visual-composer.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-site-origin.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-gravity-forms.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-bne-flyout.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-ubermeu.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-divi-builder.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-amp.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-yoast-seo.php';
require_once ASTRA_THEME_DIR . 'inc/addons/transparent-header/class-astra-ext-transparent-header.php';
require_once ASTRA_THEME_DIR . 'inc/addons/breadcrumbs/class-astra-breadcrumbs.php';
require_once ASTRA_THEME_DIR . 'inc/addons/heading-colors/class-astra-heading-colors.php';
require_once ASTRA_THEME_DIR . 'inc/builder/class-astra-builder-loader.php';

// Elementor Compatibility requires PHP 5.4 for namespaces.
if ( version_compare( PHP_VERSION, '5.4', '>=' ) ) {
	require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-elementor.php';
	require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-elementor-pro.php';
	require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-web-stories.php';
}

// Beaver Themer compatibility requires PHP 5.3 for anonymus functions.
if ( version_compare( PHP_VERSION, '5.3', '>=' ) ) {
	require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-beaver-themer.php';
}

require_once ASTRA_THEME_DIR . 'inc/core/markup/class-astra-markup.php';

/**
 * Load deprecated functions
 */
require_once ASTRA_THEME_DIR . 'inc/core/deprecated/deprecated-filters.php';
require_once ASTRA_THEME_DIR . 'inc/core/deprecated/deprecated-hooks.php';
require_once ASTRA_THEME_DIR . 'inc/core/deprecated/deprecated-functions.php';
  1. Remove the 2 lines where you need, i mean this: //
  2. Save "functions.php" on your PC / laptop
  3. Go back to FileZilla and drag and drop the file to "htdocs / wp-content / themes / ASTRA" (please note, for me it is ASTRA and for you it may be another THEME-NAME
  4. Wait a little while (5-10 seconds maybee)
  5. Look at your result

I have entered the code after:

"<?php
/**
 * Astra functions and definitions
 *
 * @link https://developer.wordpress.org/themes/basics/theme-functions/
 *
 * @package Astra
 * @since 1.0.0
 */

and before:

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * Define Constants
 */
define( 'ASTRA_THEME_VERSION', '3.4.6' );
define( 'ASTRA_THEME_SETTINGS', 'astra-settings' );
define( 'ASTRA_THEME_DIR', trailingslashit( get_template_directory() ) );
define( 'ASTRA_THEME_URI', trailingslashit( esc_url( get_template_directory_uri() ) ) );


/**
 * Minimum Version requirement of the Astra Pro addon.
 * This constant will be used to display the notice asking user to update the Astra addon to the version defined below.
 */
define( 'ASTRA_EXT_MIN_VER', '3.4.2' );

/**
 * Setup helper functions of Astra.
 */
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-theme-options.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-theme-strings.php';
require_once ASTRA_THEME_DIR . 'inc/core/common-functions.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-icons.php';

/**
 * Update theme
 */
require_once ASTRA_THEME_DIR . 'inc/theme-update/class-astra-theme-update.php';
require_once ASTRA_THEME_DIR . 'inc/theme-update/astra-update-functions.php';
require_once ASTRA_THEME_DIR . 'inc/theme-update/class-astra-theme-background-updater.php';
require_once ASTRA_THEME_DIR . 'inc/theme-update/class-astra-pb-compatibility.php';


/**
 * Fonts Files
 */
require_once ASTRA_THEME_DIR . 'inc/customizer/class-astra-font-families.php';
if ( is_admin() ) {
	require_once ASTRA_THEME_DIR . 'inc/customizer/class-astra-fonts-data.php';
}

require_once ASTRA_THEME_DIR . 'inc/customizer/class-astra-fonts.php';

require_once ASTRA_THEME_DIR . 'inc/dynamic-css/container-layouts.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-walker-page.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-enqueue-scripts.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-gutenberg-editor-css.php';
require_once ASTRA_THEME_DIR . 'inc/class-astra-dynamic-css.php';

/**
 * Custom template tags for this theme.
 */
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-attr.php';
require_once ASTRA_THEME_DIR . 'inc/template-tags.php';

require_once ASTRA_THEME_DIR . 'inc/widgets.php';
require_once ASTRA_THEME_DIR . 'inc/core/theme-hooks.php';
require_once ASTRA_THEME_DIR . 'inc/admin-functions.php';
require_once ASTRA_THEME_DIR . 'inc/core/sidebar-manager.php';

/**
 * Markup Functions
 */
require_once ASTRA_THEME_DIR . 'inc/markup-extras.php';
require_once ASTRA_THEME_DIR . 'inc/extras.php';
require_once ASTRA_THEME_DIR . 'inc/blog/blog-config.php';
require_once ASTRA_THEME_DIR . 'inc/blog/blog.php';
require_once ASTRA_THEME_DIR . 'inc/blog/single-blog.php';
require_once ASTRA_THEME_DIR . 'inc/modules/related-posts/related-posts.php';
/**
 * Markup Files
 */
require_once ASTRA_THEME_DIR . 'inc/template-parts.php';
require_once ASTRA_THEME_DIR . 'inc/class-astra-loop.php';
require_once ASTRA_THEME_DIR . 'inc/class-astra-mobile-header.php';

/**
 * Functions and definitions.
 */
require_once ASTRA_THEME_DIR . 'inc/class-astra-after-setup-theme.php';

// Required files.
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-admin-helper.php';

require_once ASTRA_THEME_DIR . 'inc/schema/class-astra-schema.php';

if ( is_admin() ) {

	/**
	 * Admin Menu Settings
	 */
	require_once ASTRA_THEME_DIR . 'inc/core/class-astra-admin-settings.php';
	require_once ASTRA_THEME_DIR . 'inc/lib/notices/class-astra-notices.php';

	/**
	 * Metabox additions.
	 */
	require_once ASTRA_THEME_DIR . 'inc/metabox/class-astra-meta-boxes.php';
}

require_once ASTRA_THEME_DIR . 'inc/metabox/class-astra-meta-box-operations.php';


/**
 * Customizer additions.
 */
require_once ASTRA_THEME_DIR . 'inc/customizer/class-astra-customizer.php';


/**
 * Compatibility
 */
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-jetpack.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/class-astra-woocommerce.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/edd/class-astra-edd.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/lifterlms/class-astra-lifterlms.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/learndash/class-astra-learndash.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-beaver-builder.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-bb-ultimate-addon.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-contact-form-7.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-visual-composer.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-site-origin.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-gravity-forms.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-bne-flyout.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-ubermeu.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-divi-builder.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-amp.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-yoast-seo.php';
require_once ASTRA_THEME_DIR . 'inc/addons/transparent-header/class-astra-ext-transparent-header.php';
require_once ASTRA_THEME_DIR . 'inc/addons/breadcrumbs/class-astra-breadcrumbs.php';
require_once ASTRA_THEME_DIR . 'inc/addons/heading-colors/class-astra-heading-colors.php';
require_once ASTRA_THEME_DIR . 'inc/builder/class-astra-builder-loader.php';

// Elementor Compatibility requires PHP 5.4 for namespaces.
if ( version_compare( PHP_VERSION, '5.4', '>=' ) ) {
	require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-elementor.php';
	require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-elementor-pro.php';
	require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-web-stories.php';
}

// Beaver Themer compatibility requires PHP 5.3 for anonymus functions.
if ( version_compare( PHP_VERSION, '5.3', '>=' ) ) {
	require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-beaver-themer.php';
}

require_once ASTRA_THEME_DIR . 'inc/core/markup/class-astra-markup.php';

/**
 * Load deprecated functions
 */
require_once ASTRA_THEME_DIR . 'inc/core/deprecated/deprecated-filters.php';
require_once ASTRA_THEME_DIR . 'inc/core/deprecated/deprecated-hooks.php';
require_once ASTRA_THEME_DIR . 'inc/core/deprecated/deprecated-functions.php';

Here is all of MY code again, and what I removed:

<?php
/**
 * Astra functions and definitions
 *
 * @link https://developer.wordpress.org/themes/basics/theme-functions/
 *
 * @package Astra
 * @since 1.0.0
 */
 
 

 /**
 * Plugin Name: Remove Subscription Action Buttons from My Account
 * Plugin URI: https://gist.github.com/thenbrent/8851287/
 * Description: Remove any given button from the <a href="http://docs.woothemes.com/document/subscriptions/customers-view/#section-2">My Subscriptions</a> table on the My Account page. By default, only the "Change Payment Method" button is removed, but you can uncomment additional actions to remove those buttons also.
 * Author: Brent Shepherd
 * Author URI:
 * Version: 2.0
 */

/**
 * Remove the "Change Payment Method" button from the My Subscriptions table.
 *
 * This isn't actually necessary because @see eg_subscription_payment_method_cannot_be_changed()
 * will prevent the button being displayed, however, it is included here as an example of how to
 * remove just the button but allow the change payment method process.
 */
function eg_remove_my_subscriptions_button( $actions, $subscription ) {

	foreach ( $actions as $action_key => $action ) {
		switch ( $action_key ) {
			case 'change_payment_method':	// Hide "Change Payment Method" button?
//			case 'change_address':		// Hide "Change Address" button?
//			case 'switch':			// Hide "Switch Subscription" button?
//			case 'resubscribe':		// Hide "Resubscribe" button from an expired or cancelled subscription?
//			case 'pay':			// Hide "Pay" button on subscriptions that are "on-hold" as they require payment?
//			case 'reactivate':		// Hide "Reactive" button on subscriptions that are "on-hold"?
			case 'cancel':			// Hide "Cancel" button on subscriptions that are "active" or "on-hold"?
				unset( $actions[ $action_key ] );
				break;
			default: 
				error_log( '-- $action = ' . print_r( $action, true ) );
				break;
		}
	}

	return $actions;
}
add_filter( 'wcs_view_subscription_actions', 'eg_remove_my_subscriptions_button', 100, 2 );
 
 


if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * Define Constants
 */
define( 'ASTRA_THEME_VERSION', '3.4.6' );
define( 'ASTRA_THEME_SETTINGS', 'astra-settings' );
define( 'ASTRA_THEME_DIR', trailingslashit( get_template_directory() ) );
define( 'ASTRA_THEME_URI', trailingslashit( esc_url( get_template_directory_uri() ) ) );


/**
 * Minimum Version requirement of the Astra Pro addon.
 * This constant will be used to display the notice asking user to update the Astra addon to the version defined below.
 */
define( 'ASTRA_EXT_MIN_VER', '3.4.2' );

/**
 * Setup helper functions of Astra.
 */
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-theme-options.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-theme-strings.php';
require_once ASTRA_THEME_DIR . 'inc/core/common-functions.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-icons.php';

/**
 * Update theme
 */
require_once ASTRA_THEME_DIR . 'inc/theme-update/class-astra-theme-update.php';
require_once ASTRA_THEME_DIR . 'inc/theme-update/astra-update-functions.php';
require_once ASTRA_THEME_DIR . 'inc/theme-update/class-astra-theme-background-updater.php';
require_once ASTRA_THEME_DIR . 'inc/theme-update/class-astra-pb-compatibility.php';


/**
 * Fonts Files
 */
require_once ASTRA_THEME_DIR . 'inc/customizer/class-astra-font-families.php';
if ( is_admin() ) {
	require_once ASTRA_THEME_DIR . 'inc/customizer/class-astra-fonts-data.php';
}

require_once ASTRA_THEME_DIR . 'inc/customizer/class-astra-fonts.php';

require_once ASTRA_THEME_DIR . 'inc/dynamic-css/container-layouts.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-walker-page.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-enqueue-scripts.php';
require_once ASTRA_THEME_DIR . 'inc/core/class-gutenberg-editor-css.php';
require_once ASTRA_THEME_DIR . 'inc/class-astra-dynamic-css.php';

/**
 * Custom template tags for this theme.
 */
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-attr.php';
require_once ASTRA_THEME_DIR . 'inc/template-tags.php';

require_once ASTRA_THEME_DIR . 'inc/widgets.php';
require_once ASTRA_THEME_DIR . 'inc/core/theme-hooks.php';
require_once ASTRA_THEME_DIR . 'inc/admin-functions.php';
require_once ASTRA_THEME_DIR . 'inc/core/sidebar-manager.php';

/**
 * Markup Functions
 */
require_once ASTRA_THEME_DIR . 'inc/markup-extras.php';
require_once ASTRA_THEME_DIR . 'inc/extras.php';
require_once ASTRA_THEME_DIR . 'inc/blog/blog-config.php';
require_once ASTRA_THEME_DIR . 'inc/blog/blog.php';
require_once ASTRA_THEME_DIR . 'inc/blog/single-blog.php';
require_once ASTRA_THEME_DIR . 'inc/modules/related-posts/related-posts.php';
/**
 * Markup Files
 */
require_once ASTRA_THEME_DIR . 'inc/template-parts.php';
require_once ASTRA_THEME_DIR . 'inc/class-astra-loop.php';
require_once ASTRA_THEME_DIR . 'inc/class-astra-mobile-header.php';

/**
 * Functions and definitions.
 */
require_once ASTRA_THEME_DIR . 'inc/class-astra-after-setup-theme.php';

// Required files.
require_once ASTRA_THEME_DIR . 'inc/core/class-astra-admin-helper.php';

require_once ASTRA_THEME_DIR . 'inc/schema/class-astra-schema.php';

if ( is_admin() ) {

	/**
	 * Admin Menu Settings
	 */
	require_once ASTRA_THEME_DIR . 'inc/core/class-astra-admin-settings.php';
	require_once ASTRA_THEME_DIR . 'inc/lib/notices/class-astra-notices.php';

	/**
	 * Metabox additions.
	 */
	require_once ASTRA_THEME_DIR . 'inc/metabox/class-astra-meta-boxes.php';
}

require_once ASTRA_THEME_DIR . 'inc/metabox/class-astra-meta-box-operations.php';


/**
 * Customizer additions.
 */
require_once ASTRA_THEME_DIR . 'inc/customizer/class-astra-customizer.php';


/**
 * Compatibility
 */
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-jetpack.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/woocommerce/class-astra-woocommerce.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/edd/class-astra-edd.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/lifterlms/class-astra-lifterlms.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/learndash/class-astra-learndash.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-beaver-builder.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-bb-ultimate-addon.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-contact-form-7.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-visual-composer.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-site-origin.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-gravity-forms.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-bne-flyout.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-ubermeu.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-divi-builder.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-amp.php';
require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-yoast-seo.php';
require_once ASTRA_THEME_DIR . 'inc/addons/transparent-header/class-astra-ext-transparent-header.php';
require_once ASTRA_THEME_DIR . 'inc/addons/breadcrumbs/class-astra-breadcrumbs.php';
require_once ASTRA_THEME_DIR . 'inc/addons/heading-colors/class-astra-heading-colors.php';
require_once ASTRA_THEME_DIR . 'inc/builder/class-astra-builder-loader.php';

// Elementor Compatibility requires PHP 5.4 for namespaces.
if ( version_compare( PHP_VERSION, '5.4', '>=' ) ) {
	require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-elementor.php';
	require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-elementor-pro.php';
	require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-web-stories.php';
}

// Beaver Themer compatibility requires PHP 5.3 for anonymus functions.
if ( version_compare( PHP_VERSION, '5.3', '>=' ) ) {
	require_once ASTRA_THEME_DIR . 'inc/compatibility/class-astra-beaver-themer.php';
}

require_once ASTRA_THEME_DIR . 'inc/core/markup/class-astra-markup.php';

/**
 * Load deprecated functions
 */
require_once ASTRA_THEME_DIR . 'inc/core/deprecated/deprecated-filters.php';
require_once ASTRA_THEME_DIR . 'inc/core/deprecated/deprecated-hooks.php';
require_once ASTRA_THEME_DIR . 'inc/core/deprecated/deprecated-functions.php';

I hope I helped someone!

Have a nice day, stay safe and healthy!

Best regards
Aldin

@CentralCrypto
Copy link

Guys, I hope you can help here....
I Cannot make the "Switch Suscription" appear. I'm using the Elementor plugin to create a custom "my account" page.
Here is my config:

Allow Switching |
X Between Subscription Variations 
X Between Grouped Subscriptions 
X Between Subscription Plans 
X Between Subscription Plans
-- | --
Prorate Recurring Payment: For Upgrades of Virtual Subscription Products Only 
Prorate Sign up Fee: Never (do not charge a sign up fee)  Prorate Subscription Length: For Virtual Subscription Products Only 
Switch Button Text: Upgrade&Downgrade
Allow Switching After: 0 day(s) from the subscription start date
Allow Switching After Each Renewal: 1 day(s) from the subscription renewal date
Prevent Switching: 0 day(s) before the subscription renewal date

The Subscriptions in fact are Products with Product Data = "Simple Subscrition" and "Virtual" field flagged.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment