How can I detect if the “myaccount/my-account.php” template is used on the Dashboard.
Currently I use:
<?php global $wp; if ( !isset($wp->query_vars['page']) ) { ?> <a href="/mein-konto/">Back to my Account</a> <?php } ?> <div class="myaccount_content"> <?php do_action( 'woocommerce_account_content' ); ?> </div>
But that feels kind of hacky. Isn’t there something like a is_myaccount_dashboard()
function?
Advertisement
Answer
Update: Detecting specifically the My account “Dashboard” page
<?php global $wp; $request = explode( '/', $wp->request ); // If NOT in My account dashboard page if( ! ( end($request) == 'my-account' && is_account_page() ) ){ ?> <a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id')); ?>">Back to my Account Dashboard</a> <?php } ?> <div class="myaccount_content"> <?php do_action( 'woocommerce_account_content' ); ?> </div>
Tested and works.
Original answer:
Yes of course there is is_account_page()
native WooCommerce conditional that returns true on the customer’s account pages.
Here is an example using is_account_page()
and is_user_logged_in()
. To get the my account link url you can use: get_permalink( get_option('woocommerce_myaccount_page_id') )
.
if ( !is_account_page() ) { // User is NOT on my account pages if ( is_user_logged_in() ) { // Logged in user // Link to "My Account pages dashboard". ?> <a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e('My Account', 'woocommerce'); ?>"><?php _e( 'My Account', 'woocommerce' ); ?></a> <?php } else { // User is NOT logged in // Link to "Login / register page". ?> <a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e( 'Login / Register','woocommerce' ); ?>"><?php _e( 'Login / Register', 'woocommerce' ); ?></a> <?php } } ?>
Reference:
After that you can Override WooCommerce Templates via a Theme using my account templates to fine tune even more WooCommerce behaviors…