• Hi all,

    with the last major update of Woocommerce the ‘my account’ page altered and I’d love to do some changes to it. There’s a function called ‘wc_get_account_menu_items’ which displays menu items. One of these items I’d like to remove but don’t know how.

    I tried a filter hook but was’nt successful.

    The function looks like the following:

    /**
     * Get My Account menu items.
     *
     * @since 2.6.0
     * @return array
     */
    function wc_get_account_menu_items() {
    	$endpoints = array(
    		'orders'          => get_option( 'woocommerce_myaccount_orders_endpoint', 'orders' ),
    		'downloads'       => get_option( 'woocommerce_myaccount_downloads_endpoint', 'downloads' ),
    		'edit-address'    => get_option( 'woocommerce_myaccount_edit_address_endpoint', 'edit-address' ),
    		'payment-methods' => get_option( 'woocommerce_myaccount_payment_methods_endpoint', 'payment-methods' ),
    		'edit-account'    => get_option( 'woocommerce_myaccount_edit_account_endpoint', 'edit-account' ),
    		'customer-logout' => get_option( 'woocommerce_logout_endpoint', 'customer-logout' ),
    	);
    
    	$items = array(
    		'dashboard'       => __( 'Dashboard', 'woocommerce' ),
    		'orders'          => __( 'Orders', 'woocommerce' ),
    		'downloads'       => __( 'Downloads', 'woocommerce' ),
    		'edit-address'    => __( 'Addresses', 'woocommerce' ),
    		'payment-methods' => __( 'Payment Methods', 'woocommerce' ),
    		'edit-account'    => __( 'Account Details', 'woocommerce' ),
    		'customer-logout' => __( 'Logout', 'woocommerce' ),
    	);
    
    	// Remove missing endpoints.
    	foreach ( $endpoints as $endpoint_id => $endpoint ) {
    		if ( empty( $endpoint ) ) {
    			unset( $items[ $endpoint_id ] );
    		}
    	}
    
    	// Check if payment gateways support add new payment methods.
    	if ( isset( $items['payment-methods'] ) ) {
    		$support_payment_methods = false;
    		foreach ( WC()->payment_gateways->get_available_payment_gateways() as $gateway ) {
    			if ( $gateway->supports( 'add_payment_method' ) || $gateway->supports( 'tokenization' ) ) {
    				$support_payment_methods = true;
    				break;
    			}
    		}
    
    		if ( ! $support_payment_methods ) {
    			unset( $items['payment-methods'] );
    		}
    	}
    
    	return apply_filters( 'woocommerce_account_menu_items', $items );
    }

    From the array ‘$items’ I’d like to remove the ‘downloads’.

    Any ideas?

    Thank you so much for any of your replies!!

Viewing 2 replies - 1 through 2 (of 2 total)
  • All you need to do is to go to the WordPress Dashboard. There, go to Woocommerce – Settings – Account and in the list of Account End points delete Download in the text field.
    This empty field is a signal to WordPress to ignore it and it will be automatically eliminated from the menu list.

    Thread Starter schlawiener

    (@schlawiener)

    Hi aneta9,

    that’s it! Thank you!!

    Regards, s.

Viewing 2 replies - 1 through 2 (of 2 total)
  • The topic ‘Woocommerce – alter a function’ is closed to new replies.